新年早々ですが、先日 Andriod版「高速バス比較 」アプリをリリースしました。
圧倒的なバス便の掲載数に、わかりやすい最安値比較、細かい条件での検索など、高速バス・夜行バスを探すためにはなくてないらないアプリです。
なお、iOS版は昨年の7月にリリースしており、現在では10万以上のダウンロードをしていただいております。
https://itunes.apple.com/app/apple-store/id1121562754?mt=8
さて、今回はAndriod版アプリの開発で行った、Google Play申請の自動化について、ご紹介します。
自動化のメリット
申請は、Google Play Developer Consoleから、必要な情報を入力し、画像をアップロード、APKのアップロードをすれば行えます。複雑なUIでもないので、それほど手間でもありません。
ただ、エンジニアであれば、ありとあらゆるデータをgitでバージョン管理して、全ての操作をコマンドで行いたいと考えるかと思います。アプリ説明や画像の軽微な変更する場合、目視では「変更点どこ?」ってなりますが、gitだと明確ですし、コマンド操作ができれば、CIサービスとの連携で誰でも申請ができるようになります。
自動化で利用するツール
Google Play Developer APIを利用することで、申請を自動化できます。申請ツールは、APIを利用して自作もできますが、gradelプラグインであるgradle-play-publisherを利用しました。
弊社であまり凝った利用はしていませんが、gradle-play-publisherではほぼ必要な機能はそろってると感じてます。
fastlaneのsupplyも良いとの噂を聞くので、iOS版のfastlaneに慣れている場合はこちらもおすすめです。
fastlane/supply at master · fastlane/fastlane · GitHub
事前準備
まず、APIの認証キーを取得する必要があります。これが結構面倒です。
以下を参考にJSONキーを取得します。
Getting Started | Google Play Developer API | Google Developers
アプリの新規作成はできないため、初回はWebコンソール上からアプリの情報を登録しておきます。
gradle-play-publisherのインストール
build.gradleに下記を追加して、gradle syncします。
buildscript { repositories { mavenCentral() } dependencies { // ... classpath 'com.github.triplet.gradle:play-publisher:1.1.5' } }
apply plugin: 'com.github.triplet.play'
play { jsonFile = file("json keyのファイルパス") }
gradlew tasksを実行すると、Play Store tasksが追加されています。( productFlavorsの定義によって追加されるタスクは異なります)
./gradlew tasks Play Store tasks ---------------- bootstrapProductReleasePlayResources - Downloads the play store listing for the ProductRelease build. No download of image resources. See #18. generateProductReleasePlayResources - Collects play store resources for the ProductRelease build publishApkProductRelease - Uploads the APK for the ProductRelease build publishListingProductRelease - Updates the play store listing for the ProductRelease build publishProductRelease - Updates APK and play store listing for the ProductRelease build
Google Playに登録されているデータをダウンロードする
bootstrap
./gradlew bootstrapProductReleasePlayResources
実行すると以下のファイル・ディレクトリが生成されます。
画像はダウンロードされないので、生成されたディレクトリにファイルを追加します。申請に最低限必要なファイルは、以下の3種類です。
Google Playに申請情報をアップロードする
デフォルトの状態だと、画像ファイルがアップロードされてないため、build.gradleに「uploadImages = true 」を追加します。
play { jsonFile = file("json keyのファイルパス") uploadImages = true }
publishListing
./gradlew publishListingProductRelease
Google PlayにAPKをアップロードする
APKは、手動でアップロードをすると、誤ったAPKを登録してしまうミスが発生しうるので、必ず自動化したいところです。gradle-play-publisherでは、publishApk
./gradlew publishApkProductRelease
build.gradleに「track = 'beta' 」を追加すると、Beta版としてAPKを登録できます。trackには、「'production'o r 'rollout' or 'beta' or 'alpha'」のいずれかが指定できます。
play { track = 'beta' jsonFile = file("json keyのファイルパス") uploadImages = true }
まとめ
上記で記載したとおり、gradle-play-publisherでは非常に簡単に自動化が可能です。リリース時のストレスを少しでも下げるために、申請作業は必ず自動化をおすすめします。