アプリリンクのトラブルシューティング

このガイドでは、一般的な問題とそのトラブルシューティング方法について説明します。Google Play Console の [ディープリンク] ページまたは Android Studio のアプリリンク アシスタントのトラブルシューティング ツールを使用することもできます。詳しくは、App Links デベロッパー ツールをご覧ください。

  • 問題: アプリを開くはずのリンクをクリックしても、ウェブブラウザで開くか、曖昧さ回避ダイアログが表示される。
  • 解決方法:
    • assetlinks.json を確認する: ファイルが有効な JSON であり、https://<your-domain>/.well-known/assetlinks.json でアクセス可能であり、リダイレクトなしで HTTPS 経由で配信されていることを確認します。オンライン検証ツールを使用する。
    • SHA-256 フィンガープリントを検証する: assetlinks.json の sha256_cert_fingerprints が、アプリリリースの署名鍵のフィンガープリントと完全に一致していることを再確認します(Play アプリ署名を使用している場合は、Google Play Console のフィンガープリントを使用します)。署名はすべて大文字にする必要があります。
    • autoVerify を検証する: AndroidManifest.xml の <intent-filter> に android:autoVerify="true が含まれていることを確認します。
    • サーバーサイドのリダイレクトを確認する: http から https へのリダイレクト、または www 以外のドメインから www へのリダイレクトにより、検証が失敗することがあります。
    • 再検証を強制する: アプリリンクをテストするガイドの ADB コマンドを実行して、新しい検証結果を取得します。
    • リンク解決を診断する(Android 17 以降): adb shell am start --debug-link -a android.intent.action.VIEW -d "<URL>" を実行して、URL に一致する候補アプリ、マニフェスト インテント フィルタ、動的アプリリンク ルールを検査します。詳細については、debug-link フラグを使用してリンク解決を診断するをご覧ください。

Android 15 以降で動的ルールが更新されない

  • 問題: assetlinks.json ファイルのルールを更新したが、新しいリンクがアプリで処理されない。
  • 解決方法:
    • 再検証を強制する: 変更をテストする最も確実な方法は、adb shell pm verify-app-links --re-verify <your-package-name> を使用して再取得を強制することです。
    • タイプミスがないか確認する: ルールのパターン マッチャーに構文エラーがないか慎重に確認します。
    • マニフェスト フィルタ ルールを確認する: アプリ マニフェストのインテント フィルタ ルールを確認して、リンクパスが除外されていないことを確認します。リンクが除外されている場合は、アプリ マニフェストのインテント フィルタの制限を緩くします。
    • 一致するルールを診断する(Android 17 以降): adb shell am start --debug-link -a android.intent.action.VIEW -d "<URL>" を実行して、評価されたルールを検査し、除外ルール(allow = 1)によってアプリが開かないかどうかを判断します。debug-link フラグを使用してリンク解決を診断するをご覧ください。

一般的な実装エラーを修正する

Android アプリリンクを検証できない場合は、次の一般的なエラーを確認してください。このセクションでは、プレースホルダのドメイン名として example.com を使用します。これらのチェックを行う場合は、example.com をサーバーの実際のドメイン名に置き換えてください。

インテント フィルタの設定が正しくない
アプリが所有していない URL を <intent-filter> 要素に含めているかどうかを確認します。
サーバー構成が正しくない

サーバーの JSON 構成を確認し、SHA 値が正しいことを確認します。

また、example.com.(末尾にピリオドが付いている)が example.com と同じコンテンツを提供していることを確認します。

サーバーサイドのリダイレクト

次のようなリダイレクトを設定すると、アプリの Android アプリリンクは一切検証されません。

  • http://example.com~https://example.com
  • example.com~www.example.com

この動作により、アプリのセキュリティが保護されます。

サーバーの堅牢性

クライアント アプリがサーバーに接続できるかどうかを確認します。

検証できないリンク

テスト目的で、検証できないリンクを意図的に追加することがあります。Android 11 以前では、このようなリンクがあると、アプリのすべての Android アプリリンクが検証されなくなることに注意してください。

assetlinks.json の署名が正しくない

署名が正しく、アプリの署名に使用した署名と一致していることを確認します。よくある間違いは次のとおりです。

  • デバッグ用証明書を使用してアプリに署名し、assetlinks.json にリリース署名のみを配置する。
  • assetlinks.json に小文字の署名がある。署名はすべて大文字で入力してください。
  • Play アプリ署名を使用している場合は、各リリースの署名に Google が使用する署名を使用していることを確認してください。これらの詳細(完全な JSON スニペットを含む)を確認するには、ウェブサイトの関連付けを宣言するの手順に沿って操作します。

バグレポートをキャプチャする

再現が難しい複雑な問題については、バグレポートをキャプチャして分析します。これにより、検証プロセスとシステムレベルのエラーに関する貴重な分析情報を得ることができます。