Edited at

Google Playに申請OK → 署名NGでインストール不可?

More than 5 years have passed since last update.

ちょっと原因も対策もよく分からないのでメモ。


前提


  • Titanium Studioからkeystoreを作成した

  • keystoreのオプションは標準のまま(RSA 2048bit)

  • 対象はAndroid 4.0以降

  • AndroidManifest.xmlは更新している


NGまでの流れ


  • 作成したkeystoreを使い、Store用にAndroidビルド

  • Google Playに申請 → OK

  • しばし待つ

  • テスト端末のデバッグ版アプリを削除

  • Google Playから申請アプリをインストール

  • 署名NGでインストールできず

  • あれ?っと思い、申請アプリのadbインストールを試すも署名NG


やったこと


  • Titanium Studioのコンソールから、jarsigner-sigalgオプションがAndroidのドキュメントで指定されているものと異なっているのを確認


  • jarsigner -sigalg MD5withRSA ...(あとは同じ)と手動でサイン


  • zipalignも手動で

  • もう一度Google Playへ申請

  • 通った (´・ω・`) 何があかんかったんやろか。毎回手動で署名とかめんどい


分かってきたこと


  • keystoreを調べると、署名アルゴリズムにSHA256withRSAが書かれている


  • keytool -list -v -keystore XXXX.keystore -alias XXXXで調べる

  • この結果を見て、builder.pyjarsigner-sigalgオプションをSHA256withRSAにしている

  • デフォルトはMD5withRSA、つまり正しい結果になるはず

  • Titanium Studioからkeystoreを作ったからこうなったのかな

  • 毎回手動サインは面倒なので、builder.pyを編集してやった。だいたい1700行目のget_sigalgメソッド。

  • どうやらTerminalの文字コードをS-JISに変更するとOKらしいぞ!まだ試してないけど。