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

Flutterで初めてのリリースビルド

Flutter アプリをグーグルストアに公開する

今回は公式ドキュメントを見てもわからなかったのでリサーチしたところ、何とか公開までたどり着きました。

公式ドキュメント

準備

git でバージョン管理をしているならブランチをrelease1.0.0に移動させましょう。特に重要ではありませんがしていると便利です。

アプリアイコンを作成

今回はflutter_launcher_iconsというpackageを使用してアイコンを作成します。このパッケージはandroid用アイコンのpngファイルを作成して自動であるべきディレクトリーに配置してくれる便利アプリです。このパッケージを使用するために3つのpngファイルを用意します。

アイコンはillustratorなどで1024 × 1024で作りましょう

参照リンク

参照リンク
ドキュメンテーション

1.前面
foreground.png
2.背面
background.png
3.アイコンの全体
icon.png

三つのアイコンを/assets/icon/に移動する
それぞれをbackground.png, foreground.png, icon.pngと名付ける

アプリアイコンを宣言

pubspec.yaml
dev_dependencies:

  flutter_launcher_icons: ^0.7.0


//改行している箇所に注意
//flutter pub get
flutter_icons:
  ios: true
  android: true
  image_path_ios: "assets/icon/icon.png"
  image_path_android: "assets/icon/icon.png"
  adaptive_icon_background: "assets/icon/background.png"
  adaptive_icon_foreground: "assets/icon/foreground.png"

android/app階層に作成する

key.properties
storePassword=<storepassword>
keyPassword=<keyPasword>
keyAlias=<aliaName>
storeFile=<place you saved your key.jks in local>
local.properties
sdk.dir=C:\\Users\\YOURNAME\\AppData\\Local\\Android\\sdk
flutter.sdk=C:\\flutter <-flutterSDKの場所
flutter.buildMode=release
flutter.versionName=1.0.0
flutter.versionCode=1

この部分を削除して

android/app/build.gradle
android {

こちらのコードを追加する。

android/app/build.gradle
   def keystoreProperties = new Properties()
   def keystorePropertiesFile = rootProject.file('key.properties')
   if (keystorePropertiesFile.exists()) {
       keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
   }

   android {

この部分を削除して、、

android/app/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
       }
   }

こちらのコードを挿入する

android/app/build.gradle
   signingConfigs {
       release {
           keyAlias keystoreProperties['keyAlias']
           keyPassword keystoreProperties['keyPassword']
           storeFile file(keystoreProperties['storeFile'])
           storePassword keystoreProperties['storePassword']
       }
   }
   buildTypes {
       release {
           signingConfig signingConfigs.release
       }
   }

app階層に新しいproguard-rules.proファイルを追加する
内容はこちらをコピペしてください

android/app/proguard-rules.pro
## Flutter wrapper
-keep class io.flutter.app.** { *; }
-keep class io.flutter.plugin.**  { *; }
-keep class io.flutter.util.**  { *; }
-keep class io.flutter.view.**  { *; }
-keep class io.flutter.**  { *; }
-keep class io.flutter.plugins.**  { *; }
-dontwarn io.flutter.embedding.**

!!注意!!
公式ではここでpro fileを有効にしろと書かれていますかAPKのビルドに失敗するので無効にします

公式では
```/android/app/build.gradle
android {

...

buildTypes {

    release {

        signingConfig signingConfigs.release

        minifyEnabled true
        useProguard true

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

    }
}

}
```

実際にはこう

android/app/build.gradle
android {

    ...

    buildTypes {

        release {

            signingConfig signingConfigs.release

            minifyEnabled false
            useProguard false

        }
    }
}

このコマンドを実行するとandroidディレクトリー階層にbuildファイルが作成されます

flutter build bundle

このコマンドで/build/app/outputs/apk/release/にapk fileが生成されるのでそれをgoogleコンソールにアップロードすると完了です。

flutter build apk

実機にrelease build版アプリをインストールする場合は下記のコマンドをじっこうする(USBなどで実機が接続されていることを確認しましょう)

flutter install

エミュレーターの場合はinstall failedとなります。ただいま原因究明中です。

次回にアップデートを行う際にはpubspec.yamlファイルでflutterのversionを変更することでapkのバージョンを変更できます。build apkコマンドを行う前に変更しましょう。

pubspec.yaml
version: 1.0.0+2

リンク(参照元)

参照元

まとめ

ちなみにこちらが私の公開したアプリです。良ければ使ってみてください
Shot Spinner: for Android
Shot Spinner: for iOS

公開したアプリ(補足)

Shot SpinnerScreenshot_1571429697.png

Screenshot_1571429685.png
Screenshot_1571429692.png

Flutter関連記事

Flutter 入門 -textFieldを開いたときにkeyboardを表示しない-

Flutterでtodo Listを作ってみた -初心者必見-
flutterでQRコードリーダーを作ってみた

ルーレットアプリ作ってみた

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
ユーザーは見つかりませんでした