Flutterでアプリの第2弾リリースしてみました。
リリースしたアプリはこちら。今回はAndroid編ということでAndroidのリンクを。
レコーディングダイエットならぬ、レコーディング物欲です。
今月はこれだけ無駄使いを我慢したんだな〜ということがわかるアプリです。
今回はアニメーションを実装してみました。
保存ボタンを押すと上からお金が降ってきます。
この記事では備忘録的に、意外と時間のかかるリリース前作業についてまとめたものです。
※2023年10月時点
リリース前にしたこと
スクリーン上のDEBUGの表示を消す
Bundle IDのcom.exampleを変更
デフォルトだとBundle IDがcom.example〜となっているので、
プロジェクト内でgrepして適切なものへ変更。
keystoreファイルを作成する
アプリへの署名のためのkeystoreファイルを作成する。
有効期限が短いとapp bundleのアップロード時に弾かれてしまうので長めに設定。
keytool -genkey -v -keystore my-release-key.jks -keyalg RSA -keysize 2048 -validity 36500 -alias mykey
キーストアのパスワードを入力してください:
新規パスワードを再入力してください:
姓名は何ですか。
[Unknown]:
組織単位名は何ですか。
[Unknown]:
組織名は何ですか。
[Unknown]:
都市名または地域名は何ですか。
[Unknown]:
都道府県名または州名は何ですか。
[Unknown]:
この単位に該当する2文字の国コードは何ですか。
[Unknown]: JP
CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=JPでよろしいですか。
[いいえ]: はい
国コードだけでも申請は通る。
key.jksはandroid/appへ格納する。
android/key.propertiesを作成
storePassword=<パスワード>
keyPassword=<パスワード>
keyAlias=key
storeFile=key.jks
storePasswordとkeyPasswordにはkeystoreで設定したパスワードを入力する。
keyAliasは、以下を実行するとわかる。
keytool -list -v -keystore /YourProjectPath/key.jks
build.gradleを編集してkey情報を認識させる
- android/app/build.gradle
plugins {
id "com.android.application"
id "kotlin-android"
id "dev.flutter.flutter-gradle-plugin"
}
def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties')
if (localPropertiesFile.exists()) {
localPropertiesFile.withReader('UTF-8') { reader ->
localProperties.load(reader)
}
}
def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
if (flutterVersionCode == null) {
flutterVersionCode = '1'
}
def flutterVersionName = localProperties.getProperty('flutter.versionName')
if (flutterVersionName == null) {
flutterVersionName = '1.0'
}
// ★追記
def keystoreProperties = new Properties()
def keystorePropertiesFile = rootProject.file('key.properties')
if (keystorePropertiesFile.exists()) {
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
}
android {
namespace "jp.geek_otter.butsuyoku_chokin"
compileSdkVersion flutter.compileSdkVersion
ndkVersion flutter.ndkVersion
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = '1.8'
}
sourceSets {
main.java.srcDirs += 'src/main/kotlin'
}
defaultConfig {
minSdkVersion flutter.minSdkVersion
targetSdkVersion flutter.targetSdkVersion
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
}
// ★追記
signingConfigs {
release {
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
storePassword keystoreProperties['storePassword']
}
}
buildTypes {
release {
// ★debug→releaseへ変更
signingConfig signingConfigs.release
}
}
}
flutter {
source '../..'
}
dependencies {}
targetSDKの更新(必要に応じて)
app/bundle.gradle
defaultConfig {
minSdkVersion 26 // ここ
targetSdkVersion 34 // ここ
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
}
リリースビルドの実行
flutter build appbundle