Closed2

Flutter製のAndroidアプリをGooglePlayにリリースする

わかなおわかなお

参考記事

FlutterでGooglePlayにリリースする方法まとめ
Flutter製のAndroidアプリをリリースする手順

1.ターミナルで以下のコマンドをたたく

keytool -genkey -v -keystore key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key

プロジェクトのターミナルで叩くと以下のエラーが出る→どこで叩けばいい?

'keytool' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

(https://enoiu.com/app-develop/flutter-release/)
この記事に解決方法があった

flutter doctor -v

を叩く→Android toolchain のJava binary at という部分に記述されているパスがjava及びkeytoolがある場所らしい

"C:\Program Files\Android\Android Studio\jre\bin\keytool" -genkey -v -keystore key.jks -storetype JKS -keyalg RSA -keysize 2048 -validity 10000 -alias key

これでkey.jksが生成された。プロジェクト配下のターミナルでコマンドを叩いたのでプロジェクトの配下にkeyが生成されている。

作成されたkye.jksファイルをandroid/app/の下に置く

android/app/build.gradleを編集する

   // buildTypesの前に入れる
    signingConfigs {
        release {
            keyAlias keystoreProperties['keyAlias']
            keyPassword keystoreProperties['keyPassword']
            storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
            storePassword keystoreProperties['storePassword']
        }
    }

build.gradleに追加

アプリ名をつける

android/app/src/main/AndroidManifest.xmlでアプリ名をつける

<application
    android:label="XXX"
    <!--中略-->
>

XXXにアプリ名を入れる

ビルドする

flutter build apk --release

を叩く

エラーが発生

* What went wrong:
A problem occurred evaluating project ':app'.
> Could not get unknown property 'keystoreProperties' for SigningConfig_Decorated{name=release, storeFile=null, store
Password=null, keyAlias=null, keyPassword=null, storeType=jks, v1SigningEnabled=true, v2SigningEnabled=true, v1Signin
gConfigured=false, v2SigningConfigured=false} of type com.android.build.gradle.internal.dsl.SigningConfig.

key.propertiesを作っていなかったから?

androidの配下にkey.propertiesを作る

storePassword=YOUR_PASSWORD
keyPassword=YOUR_PASSWORD
keyAlias=key
storeFile=key.jks

↓build.gradleに追加

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

###再びビルドしてみる

flutter build apk --release

成功!
build\app\outputs\flutter-apk\app-release.apk
に生成されてるっぽい

ストアにリリースする

GooglePlayConseleで「アプリを作成」からリリース

AppBundleにアップロードしようとしたところでエラー

アップロードされた APK または Android App Bundle がデバッグモードで署名されています。APK または Android App Bundle はリリースモードで署名する必要があります。詳しくは、署名についての説明をご覧ください。

key.propertiesで
app//key.jksにしていた→key.jksに変更

   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.release //releaseではなくdebugになっていた
        }
    }

→成功!

このスクラップは2021/07/15にクローズされました