0.はじめに
Android アプリで App Links を実装してみたんですが、どうしてもうまく機能しなくて、非常に困っていたところ、どうやらアプリの署名に問題があったみたいですので、とりあえずシェア。
1. 発生していた事象
- Android アプリには、App Link の処理を実装済み。
- サーバーには、.well-known/assetlinks.json を設定済み。
- Android Studio での App Link のテストは問題無し。
- デバッグモードでは、正常に機能。
- どうやら、Google Play 経由だと App Links が正常に機能しないみたい?
2. 発生していた事象を元に色々と調査
3. Google Play Console のアップロード証明書のリセット
- Google Play デベロッパーサポートにお問い合わせます。
- すると、以下の様な案内が届きます。
-
もしご希望でしたら鍵のリセットを行います。
その際は下記手順にしたがってご返信くださいませ。
- Android Studio ヘルプセンター記事「キーとキーストアを生成する」の手順に沿って、新しい鍵を生成。新しい鍵は、以前の鍵とは異なるものである必要があります。または、次のコマンドラインを使用して新しい鍵を生成することもできます。
keytool -genkeypair -alias upload -keyalg RSA -keysize 2048 -validity 9125 -keystore keystore.jks
この鍵は、25 年間有効な 2048 ビットの RSA 鍵である必要があります。
- その鍵の証明書を PEM 形式でエクスポート:
keytool -export -rfc -alias upload -file upload_certificate.pem -keystore keystore.jks - upload_certificate.pem ファイルを添付して、このメールに返信
$ keytool -genkeypair -alias \[アップロード証明書用キーエイリアス\] -keyalg RSA -keysize 2048 -validity 9125 -keystore \[アップロード用証明書キーストアファイル(.jks)\]1. 手順に従って、PEM 形式のアップロード証明書を作成します。 *
キーストアのパスワードを入力してください: \[アップロード証明書用キーストアパスワード\]
新規パスワードを再入力してください: \[アップロード証明書用キーストアパスワード\]
姓名は何ですか。
\[Unknown\]: ※任意 (アプリ名など)
組織単位名は何ですか。
\[Unknown\]:
組織名は何ですか。
\[Unknown\]:
都市名または地域名は何ですか。
\[Unknown\]:
都道府県名または州名は何ですか。
\[Unknown\]:
この単位に該当する2文字の国コードは何ですか。
\[Unknown\]:
CN=〜, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknownでよろしいですか。
\[いいえ\]:Y
9,125日間有効な2,048ビットのRSAのキー・ペアと自己署名型証明書(SHA256withRSA)を生成しています
ディレクトリ名: CN=〜, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown
$ keytool -export -rfc -alias \[アップロード証明書用キーエイリアス\] -file \[アップロード用証明書ファイル(.pem)\] -keystore \[アップロード用証明書キーストアファイル(.jks)\]1. 作成した PEM 形式のアップロード証明書を Google Play デベロッパーサポートへ送付します。
キーストアのパスワードを入力してください: \[アップロード証明書用キーストアパスワード\]
証明書がファイル<〜.pem>に保存されました
1. すると、以下の様なメールが届きます。 * ![FireShot Capture 057 - 現場クラウド Conne(com.genbacloud.conne)のアップロード鍵のリセットがリクエストされました - y.uekama_ - mail.google.com.png](https://qiita-image-store.s3.amazonaws.com/0/161939/f722d6f8-c223-6de4-7799-beb2ac4e9bc3.png) *
新しいアップロード鍵の登録が完了しましたので、ご連絡いたします。以下の場所にあるキーストアを更新してくださいますようお願いいたします。1. しばらくすると、Google Play Console の「アプリの署名」が以下の様な表示になり、アップロード証明書が更新されました。 * ![FireShot Capture 055 - アプリの署名 - 現場クラウド Conne - Google Play Console - play.google.com.png](https://qiita-image-store.s3.amazonaws.com/0/161939/6b6eeb15-8182-dc4b-cffb-e43b32cd5c2e.png)
ローカルマシン
ロックされたオンサイト サーバー(各種 ACL)
クラウドマシン(各種 ACL)
専用の秘密管理サービス
(git)リポジトリ
新しい鍵は以下の日時よりご使用いただけます: 2019-03-28 03:00:58 UTC
お待ちくださいましたことに感謝申し上げます。他にご不明な点がございましたら、お気軽にお問い合わせください。
その後、マニフェストファイルの設定ミスなどありながらも、何とか App Links が正常に機能する様になりました〜。
良かった〜。
99.ハマりポイント
- 今回はかなりハマりました…。
- とにかく、証明書の問題だと行き着くまでに相当時間が掛かりました。
- 色々なパターンで、うまく行くか、うまく行かないかを確認して…。
- ようやくたどり着きました…。
- 正直、このアップロード証明書って凄くわかりづらい…。
- アプリ署名と同じ証明書を Google Play Console のアップロード証明書に登録しても、怒られないし…。
- どうせだったら怒ってほしい…。
- とりあえず、
- Google Play 経由の場合は、アップロード証明書のキーストアでサイニングして、Google Play へアップロードすると、Google Play でアプリ署名の証明書のキーストアで再度サイニングして配布。
- それ以外(主にデバッグ)の場合は、アプリ署名の証明書のキーストアでサイニングして配布。
- ってことみたいです。
XX.まとめ
とりあえず、解決して良かった〜♪
では♪