2015年1月30日金曜日

「パッケージファイルに正しく署名されていません」にハマった

署名したapkをPlayストアにアップしたら、一部の端末で
「パッケージファイルに正しく署名されていません」が表示され、インストール不可の状態になった。


開発環境

Android Studio : 1.0.1
Ubuntu : 14.04
Java : OpenJDK1.7.0_65

原因

jarsignerの署名方式のデフォルト値がJDK6までとJDK7以降で変更されているようです。
そのため、コマンド実行でJDK7を使用して署名を行ったため「パッケージファイルに正しく署名されていません」と表示される端末が発生しました。

参考:
JDK7でAndroidアプリをリリースビルドする方法
Androidアプリをリリースしたら「パッケージファイルに正しく署名されていません」と表示されて焦ったでござる

解決方法

build.gradleに署名用の記述追加(OpenJDK1.7.0_65のままで大丈夫でした)
参考:AndroidStudio で APK の署名の設定を gradle.properties に記述する

gradle.propertiesに署名関連の設定を記述することで、
gitignoreでgradle.propertiesをgit管理の対象外にすると、署名ファイルのパスワードなどをアップせずに済むので、とても良いです。

gradle.propertiesに記述する
storeFile=/path/to/your.keystore

は、キーストアファイルのある場所が、/home/ysakaguchi/android/release/android.keystoreなら
storeFile=/android/release/android.keystore
となります。

確認方法

deploygateに修正したapkをアップして、JDK7のデフォルト署名方式だとうまくインストールできなかった端末で、再度インストールを試みたところうまくいくことも、先に確認できました。
「パッケージファイルに正しく署名されていません」が発生する端末は、どれなのかまでは絞れてないですが、SHARP端末はなるっぽい?かもです。
手元にIS05があったので、本件の現象が再現できました。
Xperiaは署名方式が違ってもダウンロードできていました。


ちなみに今回の件が分かったアプリはこちらになります↓

0 件のコメント:

コメントを投稿