LoginSignup
70
64

More than 5 years have passed since last update.

【Flutter】Androidアプリのリリースビルドをしてみる

Last updated at Posted at 2018-03-24

FlutterでAndroidアプリのリリースビルドをしてみたのでメモです。
詳細 & 最新情報は Preparing an Android App for Release - Flutter を参照してください。

環境

  • Flutter 0.1.5
  • Dart 2.0.0-dev.28.0

手順

1. keystore作成

いつも通りに作ります。
(参考) Sign Your App | Android Studio

2. key.properties作成

android/key.properties
storePassword=<password from previous step>
keyPassword=<password from previous step>
keyAlias=key
storeFile=<location of the key store file, e.g. /Users/<user name>/key.jks>

3. build.gradle編集

まず android の上にkeystoreの設定を追記します。

android/app/build.gradle
+def keystorePropertiesFile = rootProject.file("key.properties")
+def keystoreProperties = new Properties()
+keystoreProperties.load(new FileInputStream(keystorePropertiesFile))

android {

次に buildTypes をこのように書き換えます。

build.gradle
-buildTypes {
-    release {
-        // TODO: Add your own signing config for the release build.
-        // Signing with the debug keys for now, so `flutter run --release` works.
-        signingConfig signingConfigs.debug
-    }
-}
+signingConfigs {
+    release {
+        keyAlias keystoreProperties['keyAlias']
+        keyPassword keystoreProperties['keyPassword']
+        storeFile file(keystoreProperties['storeFile'])
+        storePassword keystoreProperties['storePassword']
+    }
+}
+buildTypes {
+    release {
+        signingConfig signingConfigs.release
+    }
+}

4. APKをビルド

Flutterプロジェクトのルートディレクトリに移動後、以下のコマンドを実行します。
普段開発しているときは画像未使用の簡素なアプリなのにapkサイズが30MBくらいあるのですが、リリースビルドでは9.2MBになっていました。

$ flutter build apk
Initializing gradle...                                1.0s
Resolving dependencies...                             8.1s
Running 'gradlew assembleRelease'...
Skipping AOT snapshot build. Fingerprint match.
Built build/app/outputs/apk/release/app-release.apk (9.2MB).

ちなみにインストールするときはflutterコマンドを使います。(adbでもインストールできます)

$ flutter install

Macを使っている場合はこれで生成したapkのディレクトリをFinderでシュッと開けます。

$ open build/app/outputs/apk/release/

ハマったこと

dart2を使っている場合はビルドするときに --preview-dart-2 オプションをつけないと起動直後に例の真っ赤な心温まる画面(エラー画面)が出ます。

$ flutter build apk --preview-dart-2
Initializing gradle...                                0.7s
Resolving dependencies...                             0.8s
Running 'gradlew assembleRelease'...                 16.6s
Built build/app/outputs/apk/release/app-release.apk (9.5MB).

このことがドキュメントに書いてなかったのでPR出してみました。
https://github.com/flutter/website/pull/907

補足

Flutterで作ったアプリということを忘れていつも通りにGenerate Signed APKやろうとしたら出来なくて調べてたらFlutterで作ってたことを思い出して公式ドキュメントにたどり着きました。
必要最低限の部分だけメモしているので詳細 & 最新情報は Preparing an Android App for Release - Flutter を参照してください。(大事なことなので2回)
上記公式ドキュメントの変更履歴は History for android-release-build.md - flutter/website で確認できます。

リンク

Preparing an Android App for Release - Flutter
https://flutter.io/android-release/

70
64
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
70
64