🦋

FlutterのアプリをGoogle Playに申請する

2024/09/17に公開

毎回失敗するので

全体の手順を考え直すことにした。

まず、GooglePlayConsoleでの「書類作成」を先にやってしまう

掲載用の画像をつくるとき、ちょっとデザイン変えたくなったりする性格なので
Buildは後回しにする。
Iconや画像をつくるとき、
いろんな記事を読んで、あっちこっちで画像編集サイトをさまよった挙げ句、
たいがいのことはMacのPreviewの編集でどうにかなる、と気づいた。
今時な「最初の2画面が斜めに交錯してる系」は、何回かやったけど飽きたので、
今回はemulatorのスクショをPreviewで編集しただけ。
サイズ指定も、背景除去もできるからね。
フィーチャーグラフィックだけ、Canvaで作った。

Build準備

  • まずKeystore、terminalで
keytool -genkey -v -keystore ./key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key

できたfileをandroid/appにひっぱっていく。
なんで最初からここにできてくれないんだ、と思うが、Flutterだからかな。
kotlinなら要らない手間なのかもしれない。

  • key.propertiesをandroid直下に
android/key.properties
storePassword=パスワード
keyPassword=パスワード
keyAlias=key
storeFile=key.jks
  • つくったkey.propertiesをapp/build.gradleから参照する
    なんか、build.gradleの構成が変わったみたいで、少しすっきりした気がする。
    前回私を悩ませたlocal.propertiesの記述もないし。
app/build.gradle
plugins {
    id "com.android.application"
    id "kotlin-android"
    // The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins.
    id "dev.flutter.flutter-gradle-plugin"
}

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

android {
    namespace = "com.laporte.academy.chronomap_in_cosmos_a"
    compileSdk = flutter.compileSdkVersion
    ndkVersion = flutter.ndkVersion

    compileOptions {
        sourceCompatibility = JavaVersion.VERSION_1_8
        targetCompatibility = JavaVersion.VERSION_1_8
    }

    kotlinOptions {
        jvmTarget = JavaVersion.VERSION_1_8
    }

    defaultConfig {
        // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
        applicationId = "com.laporte.academy.chronomap_in_cosmos_a"
        // You can update the following values to match your application needs.
        // For more information, see: https://flutter.dev/to/review-gradle-config.
        minSdk = flutter.minSdkVersion
        targetSdk = flutter.targetSdkVersion
        versionCode = flutter.versionCode
        versionName = flutter.versionName
    }

//ここも追加
    signingConfigs {
        release {
            keyAlias keystoreProperties['keyAlias']
            keyPassword keystoreProperties['keyPassword']
            storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
            storePassword keystoreProperties['storePassword']
        }
    }

    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  <=ここを変更
        }
    }
}

flutter {
    source = "../.."
}

あと、プロジェクト作ったときにcom.exampleのまま放置していた場合は、
app/build.gradleの該当部分を修正する必要もある。

実はここで、newPropertiesのところが赤くなって、右上に赤丸びっくりマークも出る。
そこをナントカしようと悪戦苦闘すると、次々大変なことになって墓穴を掘る。
どういうわけか、これは無視して大丈夫。(らしい)

  • android/app/src/mainのAndroidManifest.xmlで表示名を確認

プロジェクト名じゃなく、実際のアプリにくっついてくる名前なので。
で、実はこのファイルにも、赤丸びっくりマークが出ているかもしれないが、
ナントカしようとすると沼る。
ここも無視して大丈夫。(らしい)
なんでか聞かないで。

さあBuild

terminalで

flutter build appbundle

緑色で
Built build/app/outputs/bundle/release/app-release.aab
と表示されたら、成功。
build/app/outputs/bundle/release/ のフォルダに app-release.aabができてる。

Google Play Consoleに帰る

リリースを作成して公開する、のSectionで、

  • 国や地域を選択。
  • 新しいリリースを作成する。

このとき、認証が必要なので、「Googleで認証を作成」してから
さっきつくったaabファイルをdrag&dropして、提出!

後は結果を待つのみ

Flutter大学

Discussion