技術

【Android/ionic】これさえやればOK!アプリ公開への道

投稿日:2015年9月2日 更新日:

どうも、中田です。

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

以上!

-技術
-,

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

関連記事

no image

【Rails】idのauto increment設定を削除する

こんにちは railsを触っていてidからauto incrementの設定を削 …

no image

heroku + node.jsでError R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch

こんにちは heroku + node.jsでアプリを作っていて、いざherok …

no image

ng-ifのelse句でコンポーネントのプロパティと名前重複

こんにちは、コーテッグのこやまです。 Angularを触っていたら、コンポーネン …

[ Rails ] ExecJS::RubyRacerRuntime is not supported. Please replace therubyracer with mini_racer in your Gemfile or use Node.js as ExecJS runtime.

こんにちは。たなかです。 モバイルアプリ開発の内容でブログを書くことが多い私です …

[ionic] Error code 70 / requires a provisioning profile with the Push Notifications feature.

どうも中田です ionic使っててbuildで引っかかりましたー ionicでp …