Androidアプリをリリースするには、署名されたAAB(Android App Bundle)ファイルを作る必要があります。
やり方を調べると Android Studio を使った方法はよく見つかるのですが、私は開発に Android Studio を使っていないこともあり、うまくできませんでした。
ということで、Buildozer を使ってリリース用の署名付きAABファイルを作ったときのメモを残します。
前提
・作業環境は Ubuntu(Linux)
・ビルドのために必要な他の設定やAPKファイルの生成まではできる状態からのスタートです。
Keystore の生成
すでに生成済みの場合は作業不要です。アプリごとに生成する必要があるかはそれぞれ考え方があるかと思いますが、個人的には誰が作ったものが署名だと考えているので複数アプリに使いまわしでよいかと思います。少なくとも、同一アプリをバージョンアップして再リリースする際は前に作ったものが必要になるので、ファイルやパスワード管理はしっかりして毎度作り直すことにならないようにしたい。
事前準備
生成するときに必要な情報は下記。あらかじめ決めておきましょう。
- ファイルの生成場所とファイル名(例:~/keystores/release.keystore)
- 有効期間(日数指定。特にこだわりなければ10000日で)
- エイリアス名
- パスワード
- 姓名
- 組織単位名(個人の場合は”personal”でよさそう。会社の場合は部署名とか)
- 組織名(会社名やブランド名)
- 都市名または地域名(例:Setagaya-ku ※私は入れたけど、”-ku”とか”-shi”はいらないかも)
- 都道府県名または州名(例:Tokyo)
- 2文字の国コード(例:JP)
生成コマンド実行
準備ができたら下記コマンドを実行。(1)~(3)は事前準備で決めたものに読み替えてください。
keytool -genkey -v -keystore ~/keystores/release.keystore・・・(1) -keyalg RSA -keysize 2048 -validity 10000・・・(2) -alias hoge・・・(3)
実行すると(4)以降の内容が順に聞かれるので入力していくと(1)のパスでファイルが生成できます。
(参考)
アプリのビルド
buildozer.spec の設定
下記2か所の設定を変更します。
~
android.release_artifact = aab
~
p4a.branch = develop
署名用環境変数設定
下記コマンドで環境変数を設定します。設定する値はKeystore の生成で使ったもので読み替えてください。
export P4A_RELEASE_KEYSTORE={Keystoreファイルのパス}(事前(1))
export P4A_RELEASE_KEYSTORE_PASSWD={Keystoreのパスワード}(事前(4))
export P4A_RELEASE_KEYALIAS_PASSWD={Keystoreのパスワード}(事前(4))
export P4A_RELEASE_KEYALIAS={Keystoreのエイリアス名}(事前(2))
ビルド実行
下記コマンドでビルド実行します。
buildozer -v android release
成功したら、binにAABファイルが生成されます。
(参考)
署名確認
ビルド完了したら下記コマンドを使って署名ができているか確認します。
keytool -printcert -jarfile ./bin/(生成したファイル名).aab
Keystore の生成で入力した内容が表示されれば、署名付きAABファイルの作成完了です。リリースできるか試してみましょう。
「Not a signed jar file」とか出てきたら、うまくいっていないので、環境変数がちゃんと設定できているか等、手順を見直して再度試してみましょう。
以上です。
コメント