Flutterで作成したアプリをAndroid用にリリースビルドしたので、
その方法をまとめました。
kye.jksを作成
1. ターミナルで次のコマンドを実行する
keytool -genkey -v -keystore key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key
質問が複数されますが、パスワードと国コードだけ入力すれば問題なさそうです。
パスワードは任意、国コードは「JP」でOK。
% keytool -genkey -v -keystore ./key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key
キーストアのパスワードを入力してください:
新規パスワードを再入力してください:
姓名は何ですか。
[Unknown]:
組織単位名は何ですか。
[Unknown]:
組織名は何ですか。
[Unknown]:
都市名または地域名は何ですか。
[Unknown]:
都道府県名または州名は何ですか。
[Unknown]:
この単位に該当する2文字の国コードは何ですか。
[Unknown]: JP
CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=JPでよろしいですか。
[いいえ]: はい
10,000日間有効な2,048ビットのRSAのキー・ペアと自己署名型証明書(SHA256withRSA)を生成しています
ディレクトリ名: CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=JP
[./key.jksを格納中]
2. 作成されたkye.jksファイルをandroid/app/の下に配置する
フォルダ名を修正
次のフォルダ名をドメイン名に合わせて修正する
android/app/src/main/kotlin/com/example
ファイルを作成
androidの配下に key.properties という名前でファイルを新しく作成し次の内容を入力する
storePassword={任意のパスワード}
keyPassword={任意のパスワード}
keyAlias=key
storeFile=key.jks
各ファイルを修正
android > app > build.gradle
次のコードを android {} の直前に追記する
def keystoreProperties = new Properties()
def keystorePropertiesFile = rootProject.file('key.properties')
if (keystorePropertiesFile.exists()) {
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
}
次のコードを buildTypes {} の直前に追記する
signingConfigs {
release {
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
storePassword keystoreProperties['storePassword']
}
}
次の通り修正する
buildTypes {
release {
// signingConfig signingConfigs.debug
signingConfig signingConfigs.release
}
}
namespace を修正する
android {
namespace "com.example.{アプリ名}"
applicationId を修正する
defaultConfig {
applicationId "com.example.{アプリ名}"
android > app > google-services.json
package_name を修正する
"package_name": "com.example.{アプリ名}"
android > app > src > debug > AndroidManifest.xml
package を追記する
<!-- <manifest xmlns:android="http://schemas.android.com/apk/res/android"> -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.xxx.{アプリ名}">
android > app > src > main > AndroidManifest.xml
package を追記する
<!-- <manifest xmlns:android="http://schemas.android.com/apk/res/android"> -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.xxx.{アプリ名}">
android:label を修正する
android:label="アプリ名"
android > app > src > profile > AndroidManifest.xml
package を追記する
<!-- <manifest xmlns:android="http://schemas.android.com/apk/res/android"> -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.xxx.{アプリ名}">
android > app > src > release > AndroidManifest.xml
android:label="アプリ名"
android > app > src > main > kotlin > com > {修正したドメイン名} > {アプリ名} > MainActivity.kt
package を修正する
package com.example.{アプリ名}
ビルド
1. ターミナルで次のコマンドを実行しクリーンする
flutter clean
2. ターミナルで次のコマンドを実行しビルドする
flutter build appbundle --release