- 2008-11-05 2:01
- android
AndroidアプリをAndroid Marketで公開するにはちゃんと署名する必要があります。
本エントリでは証明書を作成し、それを使って自作のAndroidアプリをデジタル署名する方法をご紹介します。
Javaをインストールしたディレクトリを下記とします。
Javaのバイナリを下記とします。
JavaのバイナリへPATHが通っているとします。
すなわち、下記のコマンドが使えることを前提としています。
/opt/java/bin/keytool
$ which jarsigner
/opt/java/bin/jarsigner
Androidアプリに証明書を入れてデジタル署名するには2ステップで簡単にできます。
- 証明書を作成する
- Androidアプリ(apk)を署名する
では、早速それぞれを詳しく説明します。
まずは非公開鍵や証明連鎖(これをキーストアという)を作成します。
Androidアプリを署名するのに、どこかの認証を得る必要はありません。
自分で作った証明書さえあれば良いようです。
キーストアの作り方は下記の通りです。
キーストアのパスワードを入力してください: pass_phrase
姓名を入力してください。
[Unknown]: adamrocker
組織単位名を入力してください。
[Unknown]: jag
組織名を入力してください。
[Unknown]: jag
都市名または地域名を入力してください。
[Unknown]: yokohama
州名または地方名を入力してください。
[Unknown]: kanagawa
この単位に該当する 2 文字の国番号を入力してください。
[Unknown]: jp
CN=adamrocker, OU=jag, O=jag, L=yokohama, ST=kanagawa, C=jp でよろしいですか?
[no]: yes
これで、非公開鍵や証明連鎖を含んだキーストアが${HOME}/.android/にadamrocker.keystoreに作成されます。
デジタル署名の基本は共通鍵暗号ですので、このキーストアを使ってAndroidアプリを署名します。
コマンドを実行すると、対話形式で項目が出てきます。それぞれ、自分に適した値を入力して下さい。
今回使ったkeytoolのオプションを簡単に説明します。
- -genkey: 非公開鍵&証明連鎖(キーストア)の作成
- -keystore [file]: [file]にキーストアを保存する
- -validity [days]: 鍵の有効期限を[days]とする
- -alias [text]: 証明書の別名を[text]に設定する
なお、Androidのドキュメントによるとvalidityで指定する値は25年以上でないといけないようです。
推奨は10000だそうです。
Android Mapsを使ったアプリの場合、ここで作ったキーストアを使ってAndroid Maps API Keyを取得します。
API Keyの取得方法については、「AndroidでGoogle Mapsを使う最も簡単なサンプル」をご参照下さい。
先ほど作ったキーストアで、自作のAndroidアプリ(apk)を署名します。
証明したいアプリ(apk)を下記とします。
早速、このアプリを署名します。
キーストアのパスワードを入力してください: pass_phrase
追加中: META-INF/MANIFEST.MF
追加中: META-INF/ADAMROCK.SF
追加中: META-INF/ADAMROCK.DSA
署名中: res/drawable/icon.png
署名中: res/layout/main.xml
署名中: AndroidManifest.xml
署名中: resources.arsc
署名中: classes.dex
これでデジタル署名完了です。
-keystoreで先ほど作成し保存したキーストアのパスを指定します。
-verboseは詳細を表示するオプションで、必須ではありません。
その後に、署名対象となるアプリを指定します。
最後の「adamrocker」は、キーストアを作成する時に設定した別名(alias)です。
このコマンドを実行すると、対話形式でキーストアのパスワードを聞かれますので、
キーストア作成時に入力したパスワードを入れて下さい。
これだけで署名が完了しました。
あとはAndroid Marketで公開するだけですね。
Comments:0
Trackbacks:4
- Trackback URL for this entry
- http://www.adamrocker.com/blog/232/signing_for_publish_android_application.html/trackback/
- Listed below are links to weblogs that reference
- Androidアプリに証明書を入れてちゃんとデジタル署名する方法 from throw Life
- pingback from Androidの.odexを.dexに変換する方法 « 突然消失するかもしれないブログ 09-09-19 (土) 16:17
-
[…] throw Life – Androidアプリに証明書を入れてちゃんとデジタル署名する方法 […]
- pingback from Twitter Trackbacks for throw Life - Androidアプリに証明書を入れてちゃんとデジタル署名する方法 [adamrocker.com] on Topsy.com 09-10-31 (土) 22:16
-
[…] throw Life - Androidアプリに証明書を入れてちゃんとデジタル署名する方法 www.adamrocker.com/blog/232/signing_for_publish_android_application.html – view page – cached Walkin’ On The Spiral. Let’s see, if that’s true or not. — From the page […]
- pingback from Coronaの環境構築編 « TheDesignium 10-05-26 (水) 15:54
-
[…] Androidアプリに証明書を入れてちゃんとデジタル署名する方法 http://www.adamrocker.com/blog/232/signing_for_publish_android_application.html […]
- pingback from 初めてのアンドロイドアプリ&LT発表 | Stay hungry, stay foolish 11-02-06 (日) 19:07
-
[…] その後、アプリ公開までの流れは以下のサイトを参考にしました。 Androidアプリケーション配布前にやること Androidアプリに証明書を入れてちゃんとデジタル署名する方法 keytoolコマンドで公開するandroidアプリに署名するための証明書(鍵)を生成する […]