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

  • 3
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

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

前提

  • 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らしいぞ!まだ試してないけど。