🚀 PythonでAndroidアプリ制作
前回も書きましたが、
python(ライブラリの kivy + buildozer)で apk ファイルを作るまでがなかなか大変です。
しかし、今夏から Google が apk でなく、aab 形式のアプリしか登録できなくしたことで、登録までのプロセスはより困難になりました。
ようやく aab 形式の出力に成功し、アプリをアップロードして審査待ちとなったのですが、その顛末を簡単に書いておきたいと思います。
kivy, buildozer については当ブログの他の記事もご参照ください。
アプリの対象となるアーキテクチャは一般的には armeabi-v7a で、これは 99% の Android 機で動くのですが、 32ビットで動く可能性があって遅いので、Google としては 64ビットの arm64-v8a にユーザを早く移行させたいようです。 ところが、Ubuntu に入れた Android Studio の仮想 Android、つまり AVD は x86 用にコンパイルした apk しか動きません。
そこで、アプリ作りはこうなります。
- 端末で、 python main.py とやって動きを確認する。
- 動いたら、buildozer.spec を適当に編集して、 buildozer android debug を実行する。 この際はアーキテクチャーに x86 を指定しておく必要がある。
- 終わったら、開発用デバッグを ON にした実機を USB 接続し、 adb install apk名 を実行する。 これで実際にインストールされたアプリの動きを最終チェックできる。
あとは、Admob に行ってインタースティシャルとかバナーの広告枠をつくって、それをアプリに入れて、Google Play Cosole に登録すれば終り、のはずでした。 それがこうも手間どるとは……。
まず、Admob を動作させるまでが大変です。 ずっと前、Android Studio で直接 java コードを編集していた頃(😅)、コーディング自体もかなり面倒で、広告入れるのも一苦労でした。 大半忘れたけれど、SDKをはじめ使用ライブラリのバージョンのちょっとした変化で動いたり動かなかったり……。 ハイブリッドアプリの ionic を使うようにしてみたら、ホームページ作りに近い感じで作れはしたけど、Admob はやっと対応したという感じで、窮屈な方式でしか組み込めませんでした。
さて、kivy になって、ネット上では kivmob を使う情報しか出てこないので、これで動くものだと思い、セットしてみました。 しかし、これが、Readme 通りセットしても一切広告が出ません……。 やればやるだけ、コンパイルでエラー終了する場合がふえていきます。 前に ionic で作ったアプリを放っておいたところ、Google から「このままでは動かなくなるので修正しろ」という趣旨のメールがさかんに届いていたのも思い起こされます。 修正するも何も、開発環境自体を消し去ってしまったのでどうしようもなかったんですが、広告が使っている何かがバージョンアップされ、前のままでは表示されなくなるんだろうなと感じていました。
何かいい方法がないかと探しているうちに kivads というパッケージを見つけました。 公開されて 2-3ヶ月というパッケージで、新しい Admob の広告配信方法に対応しているとあります。 だめもとで入れてみると、demo は素晴らしい動作です。 いろいろやって、自分のアプリに組みこむこともできました。 ひと山越えた感じです。
デザインや配置をいじり、アンドゥ機能など、アプリ自体の機能アップを図った上で、そろそろ公開しようかとなりました。
apk はでき、実機でも動いているので、公開は簡単だと思っていたのです。 ……しかし、現実は違いました。 Google は aab 形式のアプリを優先的に受け入れる、などではなく、aab 形式のアプリしか受付けなくなっていたのです。 これはたぶん、中国が Android 市場と違う独自プラットフォームでのアプリ登録環境を構築したこと、Windows11 が apk に対応するとしていることなどへの対抗策なのでしょう。 こちらとしてはいい迷惑です。
buildozer が吐いた .buildozer 以下のディレクトリにあるアプリのプロジェクトを Android Studio に読ませたりしましたがうまくいきません。 いろいろ試した末、うまくいったのはCreating a Release AAB using p4a\buildozer.mdです。 但し、これは通常の buildozer ではだめで、以下の作業も必要です。 buildozer.spec は消えるので、コピーをとってから行うことをおすすめします。
$ pip install git+https://github.com/misl6/buildozer.git@feat/aab-support
$ buildozer init
.buildozer.spec に以下を付け足すあるいは、修正します。
android.archs = arm64-v8a, armeabi-v7a
android.release_artifact = aab
そこで、以下のコマンドを実行するとカレント bin 内に *.aab が出来上がっています。
$ buildozer -v android release
ありがとう、kivy, buildozer, p4a, kivads とその関係者の皆さん。
付記: 申請から1日あまり、無事アプリが公開されました。
![]() | ![]() |