2016/12/29

[py]PythonのソースをAndroidで動かせないものか→今回はあきらめた

pythonでいくつかソースを書いて、テストしている。
ネットから情報を取得して加工するとか、コマンドラインからの入力を加工してネットに上げるとか、その手のソースだ。

今のところ、pythonはWindowsやLinuxでしか動かしていない。
が、Androidくらいなら動かせないだろうか?と思うではないか。
Androidで動くなら、もうちょっとやれることが増えるかもしれない、ということで、環境を調べてみた。

思ったよりも、色よい返事(検索結果)がない。。。
まあ、私もネイティブの言語で動かすのが筋だとは思っているのだが、とりあえず動けばよい、というレベルの場合、多少不具合があったとしても最初に書いたコードがそのまま使えるのがありがたいのだ。

 

出てきたのは、python for androidQPython
なんとなく、python for androidを試してみることにした。


python for android

開始記事を見ながらやるものの、なかなか難しい。
難しいというか、これを書いている時点ではまだうまくいっていない。
Getting Started — python-for-android 0.1 documentation

 

まず、Ubuntu on Windowsを起動。
Installing Dependenciesを見て、apt-get installなどを実行。
Arch Linuxの方はやっていないが、これはMac用なのかな?
続けて、pipを使ってcython、virtualenvをインストール。
python-for-androidはgitの方を使った(pipのだとrecipesでエラーが出たので)。

Android SDKとNDKがいるようなので、インストールする。
が、Bash on WindowsはGUIが使えないので、コマンドラインツールだけをダウンロードし、unzipする。
その後は、tools/androidコマンドを使ってSDKをインストールする。
コマンドライン (CUI) から Android SDK をインストールする | blog.tyye.net
APIは19にした。
21以上だと、ビルド時にチェックされて使えないようなのだ。

環境変数も書いてあるように設定して、p4aを実行。
オプションの指定は、こちらをまねした。
kivy/python-for-android: Turn your Python application into an Android APK

$ p4a apk --requirements=python2 –private $HOME/android/app/helloworld --package=com.blogpost.hiro99ma.helloworld --name="helloworld" --version=0.1 --bootstrap=sdl2

よくわからんが、テンプレートでも作ってくれるんじゃないのか?
"planewavessdl2"という名前のサンプルがあるのかと思ったけど、リポジトリを検索しても出てこないし。

これが、長い。。
いろいろとダウンロードしてビルドしてくれている。

 

そして、エラーが出た。
main.pyが無い、と。
Hello world — python-for-android 0.1 documentation
ドキュメント内を検索したら出てきたので、そのファイルを置いた。
が、ここって古いp4aのドキュメントだから、あやしいかも。

dxコマンドを実行しようとして、Javaのバージョンがあわないとかなんとか。
build-toolsは少し古いものを入れたのだが、どうもbuild-toolsフォルダに新しいのが入っているとそちらが使われるようだ。
linux - Remove Android SDK packages from command line - Stack Overflow
アンインストールは、単なる削除でよいらしい。

ビルドし直すと、またエラーが。
今度は、aaptが「Syntax error: "(" unexpected」といってくる。
バージョンの違いで文法が変わったのか?と思ってbuild-toolsをさらに古くしたが、変わらない。

場所は、~/.local/share/python-for-android/dists/unnamed_dist_1あたりで作業しているようなのだけど、フォルダ構成がeclipseでやっていたときの構成に似ている。
cdで移動して、"ant debug"とすると、やはりaaptのエラーで終わった。
tools/ant/build.xmlを見ると、"aapt –> R.java"というコメントがあるので、その関係だとは思うのだが、ちょっと動かしてみたいというだけでここまで苦労するのは作業的に厳しい気がする。
やはり、githubじゃなくてpipのpython-for-androidを使うべきなのだろうか。。。
Bash on Windowsを使っているというのも不安なところだ。

 

2016年現在の「Python を android で使う」 | site-hhs
こちらを読むと、今わたしが見ていたpython-for-androidはkivyというプラットフォーム関係のようだ。
たしかにビルド方法の説明でも「Kivyアプリ」「Webアプリ」「SDL2ベースアプリ」の3種類に分かれていた。
そこら辺がわからんとダメなんかなぁ。

というわけで、今回はあきらめた。
Cにでも移植しよう。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。

注: コメントを投稿できるのは、このブログのメンバーだけです。