Androidのリリース用App Bundle(.aab)をコマンドラインから生成する
Android アプリをリリースする時には、AppBundle(.aab)を作成する必要があります。
GUI から AppBundle を作成するのは面倒なので、コマンドラインから作成する方法をまとめました。
参考
環境
macOS
アップロード鍵を作成
アップロード鍵(~/upload-keystore.jks)をターミナルから作成します。
$ keytool -genkey -v -keystore ~/upload-keystore.jks -keyalg RSA -keysize 2048 -validity 10000 -alias upload
キーストアのパスワードを入力してください:
新規パスワードを再入力してください:
姓名は何ですか。
[Unknown]:
組織単位名は何ですか。
[Unknown]:
組織名は何ですか。
[Unknown]:
都市名または地域名は何ですか。
[Unknown]:
都道府県名または州名は何ですか。
[Unknown]:
この単位に該当する2文字の国コードは何ですか。
[Unknown]:
CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknownでよろしいですか。
[いいえ]: はい
10,000日間有効な2,048ビットのRSAの鍵ペアと自己署名型証明書(SHA256withRSA)を生成しています
ディレクトリ名: CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown
[~/upload-keystore.jksを格納中]
key.properties ファイルを作成
androidApp/key.properties というファイルを作成し、アップロード鍵の ファイルパス と パスワードを指定します。
androidApp/key.properties
storePassword=<password from previous step>
keyPassword=<password from previous step>
keyAlias=upload
storeFile=<location of the key store file, such as /Users/<user name>/upload-keystore.jks>
key.properties は機密情報が含まれるため、git 管理対象から除外してください
androidApp/.gitignore
key.properties
build.gradle.kts の設定
androidApp/build.gradle.kts に、 key.properties から情報を取得するコードを追加します。
androidApp/build.gradle.kts
import java.util.*
fun readProperties(propertiesFile: File) = Properties().apply {
propertiesFile.inputStream().use { fis ->
load(fis)
}
}
android {
...
signingConfigs {
create("release") {
val keyProperties = readProperties(file("./key.properties"))
storeFile = file(keyProperties["storeFile"] as String)
storePassword = keyProperties["storePassword"] as String
keyAlias = keyProperties["keyAlias"] as String
keyPassword = keyProperties["keyPassword"] as String
}
}
}
ファイル種別が build.gradle
の場合は、以下を参考にしてください
Configure signing in gradle (opens in a new tab)
Makefile を作成
Makefile を作成し、AppBundle を生成するコマンドを記述します。
Makefile
.PHONY: help setup
.DEFAULT_GOAL := help
help:
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'
bundleRelease: ## リリース用のAppBundle(.aab)を生成する
./gradlew bundleRelease
open androidApp/build/outputs/bundle/release/
ターミナルから AppBundle(.aap)を生成
$ make bundleRelease