Androidのリリース用App Bundle(.aab)をコマンドラインから生成する

kyamada,AndroidaabApp Bundle

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
© 品川アプリ.RSS