【Flutter】アプリをGoogle Play、App Storeに公開する方法

Flutterで作成したAndroid、iOSアプリをGoogle Playに公開する方法についてまとめました。

【Androidの場合①】アプリをGoogle Playに公開

① keystoreファイル(署名するときの設定ファイル)を作成し、「android\app\key.jks」に配置します。

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

② android/app/build.gradle を以下のように編集します。

def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties')
if (localPropertiesFile.exists()) {
    localPropertiesFile.withReader('UTF-8') { reader ->
        localProperties.load(reader)
    }
}

def flutterRoot = localProperties.getProperty('flutter.sdk')
if (flutterRoot == null) {
    throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
}

def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
if (flutterVersionCode == null) {
    flutterVersionCode = '1'
}

def flutterVersionName = localProperties.getProperty('flutter.versionName')
if (flutterVersionName == null) {
    flutterVersionName = '1.0'
}

apply plugin: 'com.android.application'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"

android {
    compileSdkVersion 28

    lintOptions {
        disable 'InvalidPackage'
    }

    defaultConfig {
        // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
        applicationId "xxx.yyy.zzz" // App Bundle のパッケージ名(アプリごとに変更)
        minSdkVersion 16
        targetSdkVersion 28
        versionCode 2  // アプリを更新するたびに数値を上げる必要がある
        versionName "1.0.0" // アプリのバージョン
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    // ここから追加②
    signingConfigs {
        release {
            storeFile file("key.jks")
            storePassword "password"
            keyAlias "alias-name"
            keyPassword "password"
        }
    }
    // ここまで追加②

    buildTypes {
        release {
            signingConfig signingConfigs.release  // debugからreleaseに変更
        }
    }
}

flutter {
    source '../..'
}

dependencies {
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
} 
パラメータ 説明
password keystoreファイル作成時に設定したパスワード
alias-name エイリアス名
key.js 作成したkeystoreファイルのパス

③ AndroidManifest.xmlにもApp Bundle のパッケージ名(xxx.yyy.zzzなど)を挿入します。

■android\app\src\main\AndroidManifest.xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="xxx.yyy.zzz"> 

④ 以下のコマンドをAndroid Studioのターミナルで実行すると、「build\app\outputs\apk\release\app-release.apk 」にapkファイルが作成されます。

flutter build apk --release 

【Androidの場合①】Android App BundleでGoogle Playに公開

Android App Bundleとは、ユーザー毎に最適なapkを作成(ビルド)し配信する仕組みです。
Android App Bundle の形式のファイルの拡張子は .aabで、32bit、64bitのAPKなどがすべて入っており、Google Playはそこから必要なリソースを取り出してapkをユーザーに再構築して配信します。
そのため、ユーザー側には必要なリソースだけが含まれるapkがインストールされるので、アプリサイズの削減につながる利点があります。
ただし、 Android App Bundle を利用するためにはGoogle Play側でapkの再構築と署名を行うため、 Google Play App Signing を使う必要があります。

参考記事
1 【Androidアプリ開発】Google Play App Signingの設定方法

Flutterでは、バージョン1.7からAndroid App Bundleに対応しています。

flutter build appbundle --release 
関連記事
1 【Flutter入門】iOS、Android、Windowsアプリ開発
flutter
西住工房

コメント

タイトルとURLをコピーしました