2013年2月1日金曜日

パッケージファイルに正しく署名されていません

今回の記事はただのメモ。
 
要点だけ先に書くと、「アンインストールしてインストールし直す」だけです。
あなたがユーザーならまずこれを試してからクレームを入れるようにしてください。
これでダメなら、リリースモジュールに問題が有ると思っていいでしょう。
その場合、開発者の方は本記事の最後を見て下さい。
ユーザーの方は出来ればTwitterとかメールで直接教えてあげると感謝されますよきっと。

まず前提。
Androidアプリのリリースをするためには署名を行わなければならない。
これは、GooglePlayアップロードしたアプリを勝手に差し替えられないためである。

この仕組みのため、最初にアプリをアップロードする時に使った署名用の鍵を無くすと、そのアプリは更新が出来なくなる。

・・・という仕組みがAndroidでは利用されている。たぶんiPhoneも大体同じだが。

で、困ったことに、ダウンロード済みアプリの署名がおかしくなる場合があるらしい。
この時、アプリの更新をGooglePlayから行おうとすると、掲題のエラーではじかれてしまう。

これに関しての参考URLがこちら。

モノクロメカニズム: GALAXY NoteにカスタムROM≪ROCKET ROM v22≫を焼いてみた

こちらにはプリインストールアプリが上記現象でアップデート出来ないことが言及してある。

Logging Quest

自動探索RPG(放置型RPG)らしい。アプリの説明に、
【更新時に「正しく署名されていないパッケージファイルです」エラーが出る場合】
原因を調査しましたが、アプリ、端末を問わず、稀に発生する現象のようです。以下をお試しください。
*
ホームからメニューを開き、アプリケーション、アプリケーションの管理、と選択(機種により若干異なります)。「マーケット」を選択して「データを消去」「キャッシュを消去」を行う。

* 端末をシャットダウンし、再起動してみる。
* SDカードを取り外して更新してみる。
改善されない場合は、アプリ側では残念ながら対策不能のようです。
アンインストールし、再インストールすれば、更新できるようですが、既存のセーブデータは消えてしまいます。
申し訳ありませんが、よろしくお願いいたします。
 と書かれている。苦労されたのだろう。心中お察しします。

お部屋でモバイル: Androidでプリインストールの更新がうまくいかないとき

こちらもプリインストールアプリでこの現象が起こったときの対処法です。


リリースモジュールとかに問題が有る場合のチェックするべき点

  • デバッグモジュールなど、リリース用の鍵以外で署名された同名のアプリが既にインストールされていないか
  •  JDK7を使っていないか?
大体このどっちかです。
根本的に鍵を間違えてるとかだと、そもそもGooglePlayにアップロード出来ないはずですので。

まず、同名のアプリ(AndroidManifest.xmlで指定したクラス名)が同じアプリが入っていると、更新以外は出来ません。で、更新が出来る為にはGooglePlayに登録されているAPKと同じ署名がされている必要があります。

次にJDK7だと正しく署名出来ないらしいです。Macの場合は標準ではJDK6が入ってるはず。コンソールから"java -version"で1.6系ならOK。1.7系だとJDK7が入ってるので排除排除。

0 件のコメント:

コメントを投稿