概要
Google Play に APK をアップロードできる Google Play Publisher Gradle Plugin を1系から2系に更新してみます。
リリースノートを見る限りだと2系に上がったばかりなので、まだ更新する必要はなさそうでしたが、今後は App Bundle でリリースしたいと思ったので、試してみます。1系の導入や、必須となるサービスアカウントの準備等は 過去の記事 に書いてあるので、そちらをご覧ください。
なぜ、この Gradle Plugin を使うのか?
業務でのアプリケーションのリリースでは CI/CD の一連の流れで自動的に APK や App Bundle をアップロードできていると思います。そうした充実したインフラが用意されていない個人でのアプリ開発では、人手で APK をアップロードすることが多くなりがちです。人手での作業はミスが起こりやすいので、可能な限り自動で実施できた方がよいでしょう。
この Gradle Plugin は、基本的なコマンドだけでも以下を自動的に実行してくれます。
- APK や App Bundle のビルド
- 1の成果物と mapping.txt を Google Play へアップロード
加えて、リリースノートの更新等も設定を追加すれば可能となります。これらを Gradle Plugin 単独で実現でき、ローカルのPC上で実行できる(CI/CD環境不要)点が強みです。
なぜ、2系を使うのか?
Android App Bundle をアップロードしたい場合は2系を使う必要があります。
Gradle Play Publisher 2.0.0 beta 1
作業
キーの差し替え
2系はp12形式のキーでないと認証できないようです。推奨は JSON の方でしたので、p12形式のキーを持っていないことが多いかと思います。その場合は サービスアカウントのページから取得します。
build.gradle の修正
まず、プロジェクト root の build.gradle に書かれているプラグインのバージョンを書き換えます。
buildScript {
- classpath 'com.github.triplet.gradle:play-publisher:1.2.0'
+ classpath 'com.github.triplet.gradle:play-publisher:2.0.0-rc1'
この記事を書いている段階だと、まだ 2.0.0-rc が最新のようでした。
https://mvnrepository.com/artifact/com.github.triplet.gradle/play-publisher
次に、アプリケーションの方を修正します。androidの中に入っていた playAccountConfigs ブロックと play ブロックを消し、 android ブロックの外側に play ブロックを新しく書きます。そこに、従来の play ブロックの記述と playAccountConfigs ブロックの記述を書きます。
android {
- playAccountConfigs {
- defaultAccountConfig {
- serviceAccountEmail = 'dummy-service-account@api-dummy-dummy.iam.gserviceaccount.com'
- jsonFile = file('signing/Google Play Android Developer-dummy.json')
- }
- }
-
- play {
- track = 'beta'
- untrackOld = true
- }
+play {
+ track = 'beta'
+ serviceAccountEmail = 'dummy-service-account@api-dummy-dummy.iam.gserviceaccount.com'
+ serviceAccountCredentials = file('signing/api-dummy-dummy-dummy.p12')
+}
あとはコマンド1つでリリースできます。
$ gradle publishApkRelease
おわりに
Google Play Publisher Gradle Plugin の 1系から2系への更新は、以下の2ステップだけで OK でした。
- キーの差し替え(.json -> .p12)
- build.gradle の書き換え
Android App Bundle でのリリースを考えている場合は、今後2系への更新を進めていくとよいでしょう。
おまけ
バージョンコードによっては以下のエラーが出るかもしれません。
$ gradle publishApkRelease
* What went wrong:
Execution failed for task ':app:publishReleaseApk'.
> Version code 10000 is too low for variant release.
この場合は、現在のリリースバージョンのコードに近いものを指定し直して、再度コマンドを実行してみてください。