麦芽を支える技術

麦芽(ばくが、英語:malt)とは、麦、特に大麦の種子を発芽させたもので、ビール、ウイスキー、水飴の原料となる。(Wikipediaより)

Google Play Developer ConsoleへのAPK、AABアップロードにgradle-play-publisherを使ってみた

Google Play Developer ConsoleへのAPK・AABアップロードができるGoogle Play Android Developer APIをGradleから実行できれば、リリースビルド後にそのままアップロードできて便利だなーと思ってました。

で、自前でAPI使ってツール作るのもちょっと手間だったのでいろいろ探したら「gradle-play-publisher」というのが見つかったので、今回ちょっと使い方を調べてみました。

事前準備

これはAPI使う際の共通作業で、ググればもっと親切なサイト見つかるので、ここではとてもざっくりとだけ書きます。

Google Play Developer Consoleにて

  • 「設定」−「APIアクセス」でサービスアカウントを作成

Google Developer Consoleにて

  • APIと認証」−「認証情報」でOAuthの新しいクライアントID(種類:サービスアカウント)を作成
  • JSONキーを作成」でJSONファイルをダウンロードする

Google Play Developer Consoleに戻って

  • 「設定」−「APIアクセス」でサービスアカウントの権限を設定

この画面でサービスアカウントの「メール」欄に表示されている内容(サービスアカウントメール)と、手順内でダウンロードしたJSONファイルは後ほど使用します。

自ブロジェクトへの導入

(2021/3/10: gradle-play-publisherの利用バージョンが古かったのでv3.3.0仕様にアップデート)

ブロジェクトルートのbuild.gradleに以下のように記述(バージョンはその時最新のやつを設定)して、Gradle Syncします。

 buildscript {
     repositories {
         ...
     }
     dependencies {
        ...
        // Gradle-play-publisher
        classpath 'com.github.triplet.gradle:play-publisher:x.x.x' // Versionは適宜設定
     }
}

app/build.gradleへ追記

app/build.gradleの方にも以下のようにAPIを利用するためのcredentialな情報などを記載します。

apply plugin: 'com.github.triplet.play'

android {
    ....
 }

play {
    // ダウンロードしたJSONファイルの配置パス
    serviceAccountCredentials = file("/path/to/play-console-api-credentials.json")
    
    // GooglePlayのベータ版へのアップ。製品版は 'production' 、アルファ版は 'alpha'
    track.set("beta")
    
    // trackのステータスを設定。選択肢は `COMPLETED/DRAFT/HALTED/IN_PROGRESS`
    releaseStatus.set(com.github.triplet.gradle.androidpublisher.ReleaseStatus.DRAFT)
}

なお、自分は今回プライベートリポジトリ使ってたので、JSONファイルを直接リポジトリ内に含んでそのファイル指定してましたが、この辺も必要に応じてCIから差し込むなど適宜置き換えて下さいな。

Gradleタスク実行

各種導入・設定が完了していれば、Gradleのタスクに以下が追加されているはずです。

$ ./gradlew tasks
:
Play Store tasks
----------------
:
publishRelease - Updates APK and play store listing fopublish - Uploads APK or App Bundle and all Play Store metadata for every variant.                                                                                                                          
   See https://github.com/Triple-T/gradle-play-publisher#managing-artifacts
publishApk - Uploads APK for every variant.
   See https://github.com/Triple-T/gradle-play-publisher#publishing-apks
publishBundle - Uploads App Bundle for every variant.
   See https://github.com/Triple-T/gradle-play-publisher#publishing-an-app-bundle
:

上記英文の説明の通り、publish<product-flavor><Build-Type>ApkがAPK、publish<product-flavor><Build-Type>BundleがApp BundleをDeveloper Consoleへアップロードするタスクとなります。また今回はやってませんが、他のタスクでAPKやAABだけでなくその他の情報のアップロードもできるので、「紹介文などを全てGitで管理して、プルリクエストベースで更新する」といった運用も可能となります。

ちなみにその他のタスクのbootstrap<product-flavor><Build-Type>は更新系ではなくストアの紹介文など各種メタ情報をダウンロードするタスクなので、いきなりバイナリアップロードするのが怖い場合は、一度このタスクを実行することでAPI疎通取ると良いかもしれません。

まとめ

ちょっと類似のツールは使ってないので使い勝手の比較などは出来ませんが、個人的な目的は十分達せられるツールでした。

これでアプリ申請作業だいぶ楽や…。