開発したソフトに実際に署名をしてみました。
keystore名は、hoge.keystoreとし、alias名は、hoge パスワードは、hogehogeです。

証明書の作成


keytool -genkey -v -keystore hoge.keystore
-alias hoge -keyalg RSA -validity 10000 -dname "cn=www.taosoftware.co.jp,
ou=Taosoftware Android Development ,o=Taosoftware.,l=Tokyo,
st=Taitou, c=jp" -keypass hogehoge

アプリケーションへの署名


jarsigner -verbose -keystore hoge.keystore Wareki.apk hoge

署名確認


jarsigner -verify -verbose -certs Wareki.apk

確認結果(成功)
android_jarsigner_success.png

確認結果(署名なしの時)

android_jarsignert2.png

確認結果(デバック用の署名の時)

android_jarsignert1.png

インストール


adb install Wareki.apk

INSTALL_FAILED_ALREADY_EXISTSエラー及び、INSTALL_FAILED_UPDATE_INCOMPATIBLEとメッセージが出てインストールできない。これはデバック実行時に自動的付加される証明書と異なるためで、以前に同じパッケージ名、別の証明書でアプリケーションがインストールしてあると、バージョンアップできない仕様によるもの
android_install_fail2.png
android_install_fail3.png
/data/app /data/dataディレクトリに存在している該当パッケージを削除
adb uninstallコマンドを実行
上記処理をしても何かが残っておりインストール不可能
エミュレータの中を除いた所、/data/system/package.xmlにパッケージ名が残っていたりしており、調査のしがいはありそうだが、今回の目的とは異なるので、調査は次回とし、エミュレータのイメージを作り直した

2009/3/10 この時点でのadb uninstallコマンドは不完全な物でしたが、現在は、アプリケーションの削除、アプリケーションデータの削除、package.xmlの編集、PACKAGE_REMOVEDを投げたりと、通常のアンインストール動作と同じ処理をするので、adb shellで入ってデータを削除する必要はありません

新しいイメージでエミュレータ起動


emulator.exe -data new_image

再インストール


adb install Wareki.apk

android_install_success.png
成功です。

ブログ内の関連する記事