[WIP]怖くないAppBundle：AppBundleでのGoogle Play自動アップロードに移行する

# AppBundleを使ってアプリを小さくしたい
アプリの大きさによってインストールの割合が小さくなるのは新興国だけではないとGoogle I/O Recapで言及されていましたし、このようにアプリを小さくしたいですよね？
https://developer.android.com/platform/technology/app-bundle/ より

![image.png](https://qiita-image-store.s3.amazonaws.com/0/27388/f389def4-73ae-7d23-ffd7-a6ee63354b8a.png)

しかし、署名の仕組みを移行すると元に戻れなかったりとかして、恐怖を感じますよね？感じません？

とりあえず怖くなくなるために、HelloWorldアプリを作ってから移行するまでをがんばってみようかと思います。
![11825340335296888036.png](https://qiita-image-store.s3.amazonaws.com/0/27388/36fc1110-011b-e852-7441-0df1c19ba81f.png)


# まずapkを普通に自動リリースする
自分のところのアプリの環境と揃えるために、まず自動リリースの環境を整えています。ここは飛ばしても構いません。

## 環境構築
まずGoogle Playでこのアプリをapkとして普通に公開しておきます。

自分のところでは自動でリリースしているので、まずはその環境を作ります。(同じ流れを作りたいので。)
https://github.com/Triple-T/gradle-play-publisher
READMEにあるようにサービスアカウントを作ってあげます。(省略)

サービスアカウントキーを作ります。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/27388/78132fd2-ce93-cb50-a7c2-3dda878fadd8.png)
作ったサービスアカウントを選択してjsonをダウンロードします
![image.png](https://qiita-image-store.s3.amazonaws.com/0/27388/ae96e0cc-6062-cf5c-7b8d-dd1b90eb13e7.png)

こちらのREADMEの手順でbuild.gradleに記述します
https://github.com/Triple-T/gradle-play-publisher#installation

コミットはこちら
https://github.com/takahirom/bundle-auto-release-sample/commit/161368204d470ba84d1bcd365a970bb6fd367de4

## Google Playから画像などをダウンロード
このコマンドでGoogle Playから画像などをダウンロードします。
./gradlew bootstrapReleasePlayResources

コミットはこちら
https://github.com/takahirom/bundle-auto-release-sample/commit/cafbb3094b0d617eb160883e5211e235a860225d

## リリースする
./gradlew publishApk
上がりました。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/27388/16f1bb93-3acc-a633-1bdc-e5365f97975b.png)

そこから手動で製品版としてリリースします。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/27388/9ff88985-fec0-e45d-4f68-83c0df073320.png)

# Google Play App Signingに移行する
AppBundleを使うためには Google Play Signingに移行する必要があります。
まず今まで使っていたkeystoreをGoogle Playにアップロードします。

Play Console左のアプリの署名をクリックします。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/27388/92d5711b-d614-1f7a-09c3-4c0c7db9dfdc.png)

こんな感じのダイアログが出てきます。合意できるのであれば合意します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/27388/eeb45f57-b053-364a-d95b-2636c62fb807.png)
ちなみに詳細はこのページに飛びます
https://support.google.com/googleplay/android-developer/answer/7384423

このページに飛びます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/27388/392a23e9-11a8-2260-4afc-d33a7bd8cebb.png)
スクロールすると以下のように選択できます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/27388/d2dd7269-ee14-8424-43bb-cec0b80f3a3b.png)
アプリ署名鍵をエクポートしていないので、2番目を選択してPEPKツールをダウンロードしてjavaから始まるコマンドを入力します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/27388/3b12a407-104b-3bf5-597b-5342972e4fee.png)
そうするとencrypted_private_key_pathができるので、それをアップロードして登録します。

これでGoogle Play App Signingが有効になりました。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/27388/82521e35-b2a8-4a8e-df41-d700220c5c13.png)

何もbuild.gradleを変えずにバージョンだけを上げて、apkとして次のバージョンをアップロードしようとしてみます。

./gradlew publishApk
アップロードされました。 超簡単だった😎
![image.png](https://qiita-image-store.s3.amazonaws.com/0/27388/22dcc0c0-2026-0b27-f2f2-fb356d562540.png)
普通にそのままリリースできます。

**今はアップロードキーとGoogle Play側での署名のキーが同じ状態になっています。**

**ここで実験用にminSdkVersionを1つ上げて./gradlew publishApkしておきます。
みなさんの現場では公開したままになっているminSdkバージョンが古いAPKもあるんじゃないかなと思います。とりあえずそれの確認もしたいのでバージョンを上げて両方アップロードしておきました。**

// すごくどうでもいいんですが、作ったままのhello worldの画像だと、全く同じ画像のアプリがあるので、リリース弾かれるみたいです。気をつけてください。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/27388/95a24d08-9725-57f1-8184-d2313f4b7a64.png)

# Bundleを手動でアップロードしてみる
バージョンを上げて、以下コマンド。
./gradlew bundleRelease

aabファイルができました。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/27388/a3e58a62-42cf-8999-905f-236bbd688b6a.png)

aabファイルをとりあえずBetaチャンネルにアップロード！
![image.png](https://qiita-image-store.s3.amazonaws.com/0/27388/d38471ab-2268-d600-37e3-2fd092ded567.png)
こんなアプリでも9.3％削減できるらしい
![image.png](https://qiita-image-store.s3.amazonaws.com/0/27388/3de2d530-e771-312f-a9c1-c19b782b479f.png)
なぜかよくわからなかったけど、以前のapkを保持を押す必要があった。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/27388/55dae826-ae61-cb86-20e2-96181b5798cc.png)
このBetaチャンネルのapkをリリースします。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/27388/5b7fb357-5a30-d4ee-023e-85c32b7ae426.png)

こんな感じになっています。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/27388/e9e4ee6e-8d0a-08b8-bbe5-add196b8e417.png)
あれ、これバージョン7のapk無効にしなくていいの、、？無効にしなくてもリリースできてしまいました。どういうユーザーにバージョン7がリリースされるかは謎ですが、バージョン6など、ちゃんとminSdkバージョンが古いapkも維持されるっぽいです。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/27388/4961fa51-6b08-bfd8-4870-97cba702b737.png)

# AppBundleの自動リリース
もうできると思ってたんですが、gradle-play-publisher側がもう少しできそうなので、少し待ってみます
https://github.com/Triple-T/gradle-play-publisher/issues/262