Android App Bundle(AAB)をJenkinsで自動アップロードできるようにしてみる
Androidのビルドから内部テスト公開をコンソールでぽちぽちする….
そんなの馬鹿らしいと思い自動ビルド環境を組んでみた話。
ネックになったのが作成したapkをGoogle Play Consoleにアップロードするやり方。
調べてみるとGoogle Play Developer Publishing APIというのがある。
Google Play Developer Publishing API
https://developer.android.com/google/play/developer-api?hl=JA
サービスアカウントを作り、API経由でアップロードできるそうだ。
公式ドキュメントはわかりにくければ参考サイトは結構出てくる
この辺とか
https://qiita.com/Horie1024/items/0d3d50405f0b4bef1792
とりあえず公式サンプルがpythonだったのでpythonで入れると(認証周りで四苦八苦しつつ)なんとか導入できた
https://github.com/googlesamples/android-play-publisher-api
Android App Bundle(AAB)問題
問題となったのが最近利用可能になった、Android App Bundle。
https://support.google.com/googleplay/android-developer/answer/9006925?hl=ja
ざっくり言うとアプリサイズが軽くなるのでメリットだらけだが、公式サンプルだとアップできない問題が発生。
そのままファイルをapkからaabにすると下記のようなエラーが…
APK cannot be analyzed using aapt dump badging.
googleapiclient.errors.UnacceptableMimeTypeError: application/x-authorware-bin
ようわからん…とリファレンスを読み込んでいくとどうもエンドポイントが変わっているらしかった。
なのでエンドポイントを変更しアップロードするとうまくいけた。
実装部分なのでよかったら使ってみてください。
こんな感じで呼び出せばよし
python bin/upload_apk_service_account.py \ ${GOOGLE_API_SERVICE_ACCOUNT_EMAIL} ${GOOGLE_API_SERVICE_ACCOUNT_KEY} \ ${BUNDLE_ID} ${APK_FILE} "${VERSION_NAME}"
なんど見ても bundlesなんて公式documentに書いてないやん…
でもbundlesってsample見つかるし、みんなどこ見てるのかとか悩んでたら英語版のドキュメントの方には書いてあって日本語には無いのねこれ….
https://developers.google.com/android-publisher/api-ref/rest/v3/edits.bundles/upload
でも参考になりましたorz