no risk no life

技術、投資、時事など

AndroidアプリのKeyStore(署名鍵)をコマンド1行で生成する

Androidアプリをリリースする際に使用するKeyStoreファイルを一発で生成するコマンド。

Android Studio上で作成する方法はパスワードを記憶しておいたり便利だけど、今回のコマンドはプログラムから叩きやすい形で。

keytoolを使用するのでJDKのPATHを通しておく。

$ keytool -genkey -v -keystore ./test.keystore -keyalg RSA -keysize 2048 -validity 10000 -alias jp.hatenablog.earshttp.test -storepass hogeStorePassword -keypass fugaKeyPassword  -dname "CN=earshttp, OU=hatena blog, O=no risk no life, L=XX-ku, ST=Tokyo, C=jp"

keytoolの鍵生成コマンドはよく見かけるが、全項目を引数として渡すのはなかなか見つからず。

このうちaliasオプション以降の一部の引数を覗いて実行すると、その項目だけ対話式で質問される。

なお、dname内でコンマを使いたい場合はエスケープする必要がある。

rubyで叩いてみる

とりあえずすべての項目を変数にしてshした。

sh("keytool -genkey -v -keystore #{$output_keystore_path} -keyalg RSA -keysize 2048 -validity #{$validity} -alias #{$keystore_alias} -storepass #{$keystore_password} -keypass #{$key_password}  -dname \"CN=#{$keystore_certificates_name}, OU=#{$keystore_organizational_unit}, O=#{$keystore_organization}, L=#{$keystore_locality}, ST=#{$keystore_state}, C=#{$keystore_country}\"")

CIなどで利用できそう…。