- 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:0
- 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
