FlutterでAndroidアプリをリリースした時に解決したつまづきポイントメモ。

# 検証日時

2019年11月28日

# 全体的なリリースまでの流れと、本記事の概要

公式チュートリアルです。
https://flutter.dev/docs/deployment/android

英文がよくわからないという場合は、Chromeで日本語翻訳にかければほぼほぼ内容わかります。対応している単語がわからないときは翻訳を切って見比べると解決します。

このチュートリアルを進める時にエラーが出た部分にフォーカスして、その解決法（自分のケースでうまくいった操作）などを共有します。

__iOS 版も公開中です。お役に立てば^^__
https://qiita.com/k_mawa82/items/5b7fb10ff81c04ec3be9

# ローカル動作確認した時のFlutter周り環境情報とパッケージの各バージョン

```
$ flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, v1.9.1+hotfix.6, on Mac OS X 10.14.6 
 
[✓] Android toolchain - develop for Android devices (Android SDK version 29.0.2)
[✓] Xcode - develop for iOS and macOS (Xcode 11.2)

```
パッケージ

```#pubspec.yaml
dependencies:
  flutter:
    sdk: flutter

  rflutter_alert: ^1.0.2
  flutter_launcher_icons: any

```

# 署名構成の部分でコピペ忘れでデバッグ版ビルドに署名していたのを解決

チュートリアル「Configure signing in gradle」の「With the signing configuration info:」の部分について

```signingConfig signingConfigs.release```は初期設定だと```debug```になっててコピペ忘れてGoogle Play Consoleアップ時に「ビルドの署名がデバッグバージョンにされてます」という趣旨のエラー出してしまいました。

```
content_copy
   signingConfigs {
       release {
           keyAlias keystoreProperties['keyAlias']
           keyPassword keystoreProperties['keyPassword']
           storeFile file(keystoreProperties['storeFile'])
           storePassword keystoreProperties['storePassword']
       }
   }
   buildTypes {
       release {
           signingConfig signingConfigs.release // ここを変更！

       }
   }
```

# 「Enabling Proguard」の「Step 2 - Enable obfuscation and/or minification」でのエラー

チュートリアルのそのままだとエラーでした。
the file you created in step 1:

```
android {

    ...

    buildTypes {

        release {

            signingConfig signingConfigs.release

            minifyEnabled true
            useProguard true

            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

        }
    }
}
```
下記の参考記事に沿って変更しました。そしたらうまくいきました。
the file you created in step 1:


```
android {

    ...

    buildTypes {

        release {

            signingConfig signingConfigs.release

            minifyEnabled false // ここを変更！
            useProguard true

            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

        }
    }
}
```

参考記事
https://qiita.com/chooyan_eng/items/022721c09ddfc758476e

# $flutter build appbundle

でアプリバンドル作成（.aabファイル）、アップ
上記のポイントでエラー回避されていれば無事にリリースビルドが得られると思います。

# Google App Console　でのポイント

### アプリの署名について。

3つ選択肢がありましたが、
自分は、Google Play アプリ署名を選びました。

(pepk.jarを使う暗号化も一度試しましたが、

なぜか下記のエラー報告のようにうまくいかなかったのですが、
https://stackoverflow.com/questions/52269806/error-running-pepk-app-signing-tool-at-command-line-java-jar-pepk-jar

上記Google Play アプリ署名を選択したら不要になったので結果オーライです。)

なお、証明書ダウンロードなど色々出てきますが、Flutterプロジェクトに新たに追加操作するなどの必要はないです。当初に行った鍵生成→署名つきリリースビルドで署名に関する操作は完了しています。

### Consoleでチェックマークがある項目は全部埋めないとリリースできない。

「アプリの署名」や、「ストアの掲載情報」、「コンテンツのレーティング」などチェックマークが薄く灰色で示されている部分は入力必須項目なので埋めます。

下記が参考になりました。
https://www.cotegg.com/blog/?p=1807

# コードアップからリリースまでかかった時間計測

テスト版app.bundleをアップしてから審査完了（問題なしストレート）で4日間
その後同じバンドルを製品版公開してから、1日後に審査完了でGooglePlay一般公開完了

という感じでした。

なおリリースしてすぐの現在GooglePlayでの検索には引っかからない状態です。ので、直リンクでTwitterやブログなどの広報記事から誘導する必要があるようです。

__iOS 版も公開中です。お役に立てば^^__
https://qiita.com/k_mawa82/items/5b7fb10ff81c04ec3be9