Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

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/

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした