先日初めてFlutterで作成したアプリをiOSおよびAndroidのストアに公開しました.公開手順は公式ドキュメントに従っていれば基本的に問題はないですが,手間取ったところをまとめました.
なお,私は日頃からiOSアプリをネイティブで開発しており,ストア公開の経験もあります.Androidアプリに関しては数年に一度作成して遊ぶ程度で,Playストアに公開は今回が初めてです.
今回のFlutterの環境は以下の通りです.
$ flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, v1.5.4-hotfix.2, on Mac OS X 10.14.5 18F132, locale
ja-JP)
[✓] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
[✓] iOS toolchain - develop for iOS devices (Xcode 10.2.1)
[✓] Android Studio (version 3.4)
[✓] VS Code (version 1.34.0)
[✓] Connected device (1 available)
• No issues found!
追記
- 2019/07/11 Andoridアプリの64bitビルドに関して
Androidアプリ
公式ドキュメント
Proguard
ソースコード難読化のProguardで,一部のサードライブラリが機能しなくなりました.そこで,そのサードライブラリを対象から外しました.サードライブラリのパッケージはそのドキュメントを見るか,実際にAndroidプロジェクトを開けば,分かりました.
-keep class hogehoge.piyopiyo.** { *; }
この確認作業はリリースビルドと実機インストールで念入りに確認しました.
$ flutter build apk --release
$ flutter install -d {device_id}
なお,device_id は flutter install
をオプションなしで打てば一覧表示されます.
Androidアプリの64bit対応
ストアに提出するには,32bitおよび64bitに対応する必要があります.推奨される app bundle (aab) でビルドするコマンドが用意されています.
$ flutter build appbundle
しかしながら,現状 (ver 1.5.4-hotfix.2, channel stable) だと,そのaabには64bitは含まれていません.すでにissueが立っており,ver 1.7 で対応予定だそうです.なお,dev channel に切り替えて使ってみましたが,Playストアからダウンロードするとクラッシュする不具合がまだ残っていました.
そこで,32bitおよび64bitそれぞれのapkを作成して,それら2つで申請しました.
(0) android/app/build.gradleに各アーキテクチャの設定を加える.
defaultConfig {
ndk.abiFilters 'armeabi-v7a','arm64-v8a','x86','x86_64'
}
(1) 32bitアプリをビルドする
$ flutter build apk --release --target-platform=android-arm
(2) ビルドした 32bit アプリを Google Play Console にアップロードする
(3) versionCode を増やす
(4) 64bit アプリをビルドする
$ flutter build apk --release --target-platform=android-arm64
(5) ビルドした 64bit アプリを Google Play Console にアップロードする
Play Consoleにアップロードすると「aabを使って」など警告が表示されますが,仕方ないのでそのままで公開しました.
Flutter 1.7が公開されました (追記, 2019/07/11)
aabビルドの64bit問題を解決した Flutter 1.7 が公開されました.上記のように32,64bitそれぞれをビルドしなくても,aab1つで解決すると思います(自作アプリのアップデート予定が直近でないので未確認です,報告まで).
iOS アプリ
公式ドキュメント
基本的にFlutterのビルドコマンドを行うだけで,後は通常のiOSアプリのリリース作業と同じです.
$ flutter build ios
以下を忘れずに
- バンドルIDや表示名を書き換える
- 証明書関連を設定する
なお,アーカイブ時に結構の数の warning が表示されてましたが,アプリ審査は無事に通りました.