どうも、中田です。
ionicでHTML5/CSSハイブリッドアプリ開発してるんですが、
GUIでなくコマンドプロンプトからアプリ公開の準備をすることになりました。
細かいことは置いといて、これやればOK手順をまとめときます。
Android用リリースビルド
$ ionic build --release android
keystore作成
$ keytool -genkey -v -keystore XXXXX.keystore -alias YYYYY -keyalg RSA -validity 10000
XXXXXは任意で。
YYYYYはキーストアの中の証明書と鍵ペアの識別alias
jarファイルにデジタル署名
$ jarsigner -verbose -sigalg MD5withRSA -digestalg SHA1 -keystore /(keystoreディレクトリ)/XXXXX.keystore /(ionic作業ディレクトリ)/platforms/android/build/outputs/apk/android-armv7-release-unsigned.apk YYYYY
YYYYYはキーストアの中の識別alias
zipalignする(*後述)
$ /(AndroidSDKのディレクトリ)/sdk/build-tools/(SDKバージョン)/zipalign -v 4 /(ionic作業ディレクトリ)/platforms/android/build/outputs/apk/android-armv7-release-unsigned.apk /(ionic作業ディレクトリ)/platforms/android/build/outputs/apk/android-armv7.apk
はい、これで /(ionic作業ディレクトリ)/platforms/android/build/outputs/apk/配下にapk ファイルができましたので、
これをGooglePlay DeveloperConsoleにアップして晴れて公開できるという流れです。
細かいこと
最初に細かいことは置いてしまったので、書いていこうかと思います。
keystoreについて
keystoreとは、証明書と鍵のペアを複数まとめたファイルでkeytoolを用いて操作していくものです。
普段はkeystoreに複数のペアが入っていて、keytool -list -v -keystore XXXXX.keystore
で内容を見たりできます。
facebookとかでhashが必要になる場合は、このように。。
keytool -exportcert -alias YYYYY -keystore /(keystoreディレクトリ)/XXXXX.keystore | openssl sha1 -binary | openssl base64
jarsignerについて
これは読んで時の如く、jarファイルにsign(署名)するものです。
このアプリは私が作りました!という証明のためのものです。
アプリ公開は自分で作った秘密の鍵で、アプリにデジタル署名してGooglePlayに上げます。
アプリバージョンアップの際、GooglePlayさんは前回と違うデジタル署名がされてたら、
「前回と違くね?作った人違うからだめだよ」と言って公開をさせてくれません。
なので、上段で話に出たkeystoreは大事にしておきましょう。
zipalignについて
簡単に言うと最適化。
作成したアプリをAndroid端末から効率よくアクセスしてもらうために、
4バイトのバウンダリに整頓してくれるコマンドです。
これをしないと、メモリの消費量が上がったり、パフォーマンスにも影響してくるということなので、
やっとくべきものですね。
ちなみにこのコマンドで実施済みかどうかが分かります。
zipalign -c -v 4 ZZZZZ.apk
実施済みなら
Verification succesful
実施済みでないなら
Verification FAILED
以上!