Android用アプリケーションを公開するには電子署名をする必要がある。
詳細は、http://code.google.com/android/devel/sign-publish.htmlに記載されているが、簡単にまとめてみた。

  • アプリケーションにデジタル署名をする必要がある
  • 署名されていないアプリケーションは、エミュレータでも実機でも、インストール及び実行不可能
  • デジタル署名を行う証明書は、自己証明書(オレオレ証明書)で良い 認証局は必要ない
  • デバック実行時には、ADTが自動的にデバック用の署名を行っているのでエミュレータでの実行が可能となっている。
  • 証明書の有効期間は、インストール時だけに使用される。インストール後に有効期間が切れても、アプリケーションは動作可能
  • 標準的なJAVAのツールである、Keytool,Jarsignerでキーを作成しapkファイルに署名をする

自己証明書ではあるが、同一の証明書を持つ複数のアプリケーションがあった場合、同じ作成者が作成した物である事は証明できるため、以下の事項で証明書は利用されている。

  • バージョンアップ時にチェックをする
  • 同じ証明書を持つアプリケーションは、同一プロセスでの実効が可能
  • 証明書をベースとしたPermission設計ができ、dataやcodeの共有が可能

ちなみに署名されてないソフトをエミュレータにインストールすると以下のようなメッセージが表示されてインストールができない。
android_install_fail.png


ADT Plugin for EclipseとAnt build toolは、デバックモードとリリースモードの2つのモードで事なった署名方法を行う

デバックモード

JDKのツールで、keystore/keyを作成
以下の、keystoneとpasswordを使用する。


* Keystore name ― "debug.keystore"
* Keystore password ― "android"
* Key alias ― "androiddebugkey"
* Key password ― "android"
* CN ― "CN=Android Debug,O=Android,C=US"

もちろんこのままの値で公開してはいけない。
上記の値は変更する事はないと思うが、Windows > Prefs > Android > Build.で変更可能
adt_biild.png
この証明書は365日の有効期限となっているため、ADTをインストールしてから365日たつと以下のようなエラーが表示される。


debug:
[echo] Packaging bin/samples-debug.apk, and signing it with a debug key...
[exec] Debug Certificate expired on 8/4/08 3:43 PM

この時は、Windows > Prefs > Android > Buildに設定されているdebug.keystoreファイルを削除して、再buildを行うとまた、365日デバックビルドが使用可能となる。

リリースモード

リリースモードでは署名されない.apkファイルが作成される。
作成の仕方
1.プロジェクト右クリック->Android Tools ->Export Application Package.
android_release_mode1.png
2.アプリケーションのマニュフェストファイル(AndroidManifest.xml)を開き、「Export unsigned apk」を選択
android_release_mode2.png
上記で作成した、.apkファイルに対して、Keytool,Jarsigner,等を使用して署名をしていく。
注意事項)Android Marketでソフトを公開する場合は、証明書の有効期限を2003年10月22日以降にしておかなければいけない。

ブログ内の関連する記事