🔨 Kivy+Buildozer環境作り

2021/10/31

🔨 Kivy+Buildozer環境作り  一応 Kivy で Android アプリを作る道筋は見えたものの、それはまだジャングルを行くような手間のかかる行軍です。 もっとスピーディに往復できる道筋が行けるようにならないと、本格的に開発などやってられません。 そこで、今日はその道をならしておこうと思いましたが、これが結構大変だったので、記録を残しておくことにします。 まずはともあれ、以下のコマンドを実行すると、Buildozer はインストールされます。


$ git clone https://github.com/kivy/buildozer.git
$ cd buildozer
$ sudo python setup.py install
$ buildozer init

 しかし、残念ながら、buildozer のディレクトリに main.py を置いて次のコマンドを実行しても失敗します。

$ build android debug deploy run

 エラーメッセージを見ると、SSL で失敗していることがわかります。 そこで、以下のコマンドを実行してみました。

$ python -m pip install python-pptx --user
$ sudo apt install libssl-dev

 しかし、残念ながら状況は改善しません。 そこで pip のチェックを行ってみると、次のような感じのエラーが……。 私の環境は Ubuntu 20.04 で、最初は apt 中心に古い python を動かしていたのですが、 pypy を入れ、cython を入れ、eel だ、numpy だ、cupy だとやっているうちに、20.04 の枠を出てバージョン管理が乱れてきました。 まあ、しかたないですね、ubuntu20.04 の枠を超えたことに首を突っこみはじめたわけですから。

$ pip check
 ... launchpadlib 1.10.13 requires testresources, which is not installed.
 ...has requirement pygments>=2.4.1, but you have pygments 2.3.1.

 これらのエラーについては以下で解消しました。

$ sudo apt install python3-testresources
$ apt purge python3-pygments
$ pip install Pygments

 しかし、buildozer のコマンドで執拗に同じエラーが出るので、一度 buildozer のディレクトリを削除し、再び git clone ... からやり直しました。 すると直ったようです。 どのタイミングで直ったのか定かではありませんので、やったことを全て書きました。 この状態で、Android のホームディレクトリに apk ファイルを置き、セキュリティの警告を受けながらファイラーからインストールするとシンプルなアプリですが、見事動きます。

 つづいて、Google Play Store から Kivy Launcher をダウンロードし、main.py を置いて動かそうとするのですが、これまた簡単には動きません。 わかったのは、Android の内部メモリの、ファイラーから見えるルートに kivy というフォルダを作り、その中にサブフォルダを作って、必要なファイルと、メインのスクリプトである main.py、以下の記述をした android.txt を置かないとだめ、ということです。

title=テストアプリ
author=峰山進
orientation=portrait

 こうすると、動くスクリプトもありますが、真っ暗なままというものもあります。 残念ながら、Kivy Launcher だけではアプリのテスト環境としては不足です。 しかたなく、一旦削除していた Android Studio をもう一度入れることにしました。 あ、そうしているうち、不要なアプリを削除していったどこかのタイミングで kivy 自体が動かなくなっていたので、再度前回のやり方でインストールしました。

 Android Studio のインストールについてはUbuntu で Android Studio のダウンロードとインストールとテスト実行を参照してください。 今は気になる点だけ書きます。

 うちの環境は java がすでに入っていましたが、Android-Studio のそれをデフォルトにした方がいいので、~/.profile で以下の記述だけ確認・修正しました。

JAVA_HOME=/usr/lib/jvm/java-9-oracle
PATH=/usr/lib/jvm/java-9-oracle/bin:$PATH
CLASSPATH=.:/usr/lib/jvm/java-9-oracle/lib

 さらに作業を進め、再び ~/.profile を修正します。 うちの環境では sdk は /usr/local/android-studio には存在していませんでした。

export JAVA_HOME=/usr/local/android-studio/jre
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib

 ログインし直してから、

$ studio.sh

で起動しましたが、今度は adb がうまく動きません。 20.04 の android-tools-adb を再度 apt install してみたりしましたがうまくいきません。 以下のようなエラーメッセージがあちこちで出ます。

adb server version (41) doesn't match this client (39) 

 どうやら Android Studio の adb とシステムの adb のバージョンが違うらしいのです。 この際、Android Studio のそれを優先することにし、力技で、$HOME/Android/Sdk/platform-tools を $PATH の最優先にしました。 つまり、~/.profile の最後を以下のようにしたわけです。

export PATH=$HOME/Android/Sdk/platform-tools:$PATH

 これでエミュレータに関するエラーは出なくなったのですが、依然として以下のようなエラーが出ます。

[INSTALL_FAILED_NO_MATCHING_ABIS: Failed to extract native libraries, res=-113]

 これは、buildozer 内にある buildozer.spec で、エミュレータの場合 x86 を、実機の場合 armeabi-v7a を指定してビルドすればだいじょうぶです。 ただ、現 Android Studio には Google USB driver がありません。 そのせいか、実機が認識されず、adb コマンドで apk ファイルを実機にインストールすることができないと思っていましたが、 どこかで開発者モードの USB デバッグを OFF にしていたのが原因でした。 これで、Android Studio の仮想 Android ディバイスでも、実機でもテストすることができるようになりました。

 ようやく実際的な環境づくりを終えた感じですが、正直なところかなり疲れました。

戻る: Kivyをインストールする
続き: KivyでAndroidアプリ制作

twitterシェア Facebookシェア
  コメントの注意点