play storeへのapkのuploadを自動化する
gradle-play-publisherというライブラリを利用して、play storeに自動でapkをuploadする方法を紹介します
前準備
サービスアカウントの作成
- DeveloperConsoleのAPIアクセスにアクセス
https://play.google.com/apps/publish/#ApiAccessPlace
にアクセスをして一番下のサービスアカウント作成を押します
- サービスアカウントを作成
- Google API コンソールを押してGoogle APIsに移動します
- 青で表示されているサービスアカウントの作成を押してアカウントを作ります
役割をオーナーにして秘密鍵はP12を指定しましょう。作成したら作成されるP12ファイルは後ほど使用するので適切な場所に保管して下さい。
- 作成後最初の画面に戻ってくると、先程作成したアカウントが追加されています
次にアクセスを許可を押します
- ここで適切な権限を設定して下さい。ここに表示されているメールアドレスは後ほど使います。
Upload
grade
- rootディレクトリのbuild.gradleに追記します(執筆時点は1.1.5なので各自最新バージョンを取得して下さい)
buildscript {
repositories {
mavenCentral()
}
dependencies {
// ...
classpath 'com.github.triplet.gradle:play-publisher:1.1.5'
}
}
- applicationディレクトリのbuild.gradleに追記します
serviceAccountEmail
に先程作成したアカウントのmail addressとpk12File
に作成したp12ファイルのpathを追記します。
apply plugin: 'com.github.triplet.play'
android {
play {
track = 'alpha'
serviceAccountEmail = 'your email address'
pk12File = file('your p12 path')
}
}
ここでは
* uploadImages
で画像
* track = 'production'
, userFraction = 0.2
で20%リリース
等の細かな指定が可能です。ここは各自ライブラリのドキュメントを見て下さい。
tasks
ここまで設定できたら
./gradlew tasks
を実行するとpublish用のtaskが追加されていると思います。
build variantの名前によりますが、apkが既にある状態ならば
./gradlew publishProductRelease
でuploadされるかと思います
他にも作成されるのでドキュメントを見て下さい。
現在のプロジェクトではCircleCIを利用しているので、例としてmasterブランチにマージされたらapkを上げるとすると
circle.ymlにこのように追加すると自動でapkがstoreにuploadされます
deployment:
master:
branch: master
commands:
- ./gradlew publishProductRelease