Android 向けプライバシー サンドボックスのトラブルシューティング ガイド

このドキュメントでは、Android 版プライバシー サンドボックスを設定する際の一般的な問題の解決方法について説明します。このガイドにないエラーが表示された場合は、Google までお問い合わせください

エラーがスローされる理由として考えられるものが複数ある場合もあります。以下は、一般的なエラーとその修正方法の一部を示しています。ただし、別の理由で同じエラー メッセージが表示される可能性もあります。

トラブルシューティングの前に

デバイス設定の更新を無効にする

プライバシー サンドボックスのテストで発生している問題をトラブルシューティングする場合、最初に行うべきことはデバイス設定の更新を無効にすることです。これにより、デバイスがサーバーから更新済みの設定を取得することを防止し、テストデバイスのプライバシー サンドボックスが誤って無効にならないようにします。

次のコマンドを使用して、デバイス設定の更新を無効にします。

adb shell device_config set_sync_disabled_for_tests persistent

テスト後にデバイス設定の更新を再度有効にする場合は、次のコマンドを使用します。

adb shell device_config set_sync_disabled_for_tests none

adservices 詳細ログを有効にする

adservices の詳細ログで、表示されているエラーの詳細なコンテキスト情報を確認できます。有効にするには、次のコマンドを使用します。

adb shell setprop log.tag.adservices VERBOSE

デバイスが正しく設定されていることを確認する

デバイス設定の更新を無効にしたばかりの場合は、これらの手順を再度実行して、デバイスが適切に設定されており、テスト中にその状態が維持されるようにすることをおすすめします。

  • 該当する adb コマンドを使用して PPAPI を有効にする
  • 目標に応じて、デバイスを登録するか、登録を無効にします。

コードをチェックして PPAPI が利用可能であることを確認する

コードベースにチェックを追加して、プライバシー サンドボックスに必要なバージョンがデバイスにあることを確認できます。

SDK 拡張機能を介してベータ版リリースを使用している場合は、ビルドと SDK 拡張機能のバージョンが正しいかどうかを確認します。

Jetpack ライブラリを介してベータ版リリースを使用している場合は、デバイスでプライバシー サンドボックスを使用できない場合に、初期化関数が null を返します。例:

すべてのリリースについて、Google Play 開発者サービスを確認します。

セキュリティの例外

セキュリティ例外エラーは通常、プライバシー サンドボックス リソースへのアクセスの承認がなんらかの形で不足している場合に発生します。

権限がリクエストされなかった

エラー:

Failed to get Ad ID: java.lang.SecurityException: Caller is not authorized to call this API. Permission was not requested.

考えられる理由:

広告 ID にアクセスするための権限を宣言する必要があります。

解決方法:

AndroidManifest.xml で次のように権限を宣言します。

<uses-permission android:name="android.permission.ACCESS_ADSERVICES_AD_ID" />

発信者が承認されていない

エラー:

Failed to find resolveInfo for adServices service. Intent action: android.adservices.adid.AdIdProviderService

Failed to find AdServices services

Caller not authorized

考えられる理由:

デバイスが正しく登録されていません。デバイスを設定するための登録後の手順を含め、すべての登録手順を実施していることを確認します。

考えられる理由:

登録 URL が一致しません。

解決方法:

  1. 登録データを調べて、コードで使用している URL とプライバシー サンドボックスに登録した URL に違いがあるかどうかを確認します。たとえば、https://adtech.example.com/source を使用しているが、登録された URL が https://adtech.example.com/register_source であることが考えられます。
  2. 登録されている URL と一致するようにコードを調整します。たとえば、URL に「/source」ではなく「/register_source」を追加するようにサンプルアプリの行を調整できます。

このエラーが引き続き表示される場合:

会社が登録リストに含まれていないか、会社は登録されているがアプリのマニフェスト許可リストには登録されていない可能性があります。android-ps-support@google.com に連絡して、組織がプライバシー サンドボックスに登録されていることを確認してください。

発信者が許可されていない

エラー:

Failed to get Ad ID: java.lang.SecurityException: Caller is not authorized to call this API. Caller is not allowed. Package [package name] is not allowed to call the API.

考えられる理由:

パッケージ名が許可リストに登録されていません。

解決方法:

許可リスト内のすべてのパッケージ名を許可します。

adb シェルを直接使用する場合:

前述のコマンドは bash などのシェルで機能しますが、adb シェルを直接起動してコマンドを実行する場合、引用符をエスケープしないでください。代わりに、次のようにコマンドを実行します。

解決方法:

パッケージ名を許可リストに追加します。

adb shell device_config put adservices ppapi_app_allow_list [package name]

パッケージ名が許可リストに含まれていることを確認します。

adb shell device_config get adservices ppapi_app_allow_list

必要に応じて、次のコマンドを使用して許可リストを削除できます。

adb shell device_config delete adservices ppapi_app_allow_list

不正状態の例外

不正状態の例外は、不正または不適切なタイミングでメソッドが呼び出されたことを示します。このようなタイミングでは、環境またはアプリケーションはリクエストされたオペレーションに対して適切な状態ではありません。

不正状態の例外: サービスが利用できない

エラー:

com.example.measurement.sampleapp E Failed binding to measurement service: java.lang.IllegalStateException: Service is not available

考えられる理由:

緊急停止スイッチを無効にする必要があります。

解決方法:

緊急停止スイッチを無効にするには、次のコマンドを使用します。

adb shell 'device_config put adservices global_kill_switch false'

考えられる理由:

ユーザーの同意が得られていません。

解決方法:

次のコマンドを実行します。

adb shell am start -n com.google.android.adservices.api/com.android.adservices.ui.settings.activities.AdServicesSettingsMainActivity

上記のコマンドが完了したら、[プライバシー サンドボックスを有効にする] の設定を [オン] に切り替えます。

adb コマンドのエラー

ジョブが見つからない

エラー:

Could not find job 14 in package com.google.android.adservices.api/ user 0

考えられる理由:

プライバシー サンドボックス API がトリガーされていません。

解決方法: このジョブを実行する前に、プライバシー サンドボックス API のいずれか(registerSource()getTopics()selectAds() など)を呼び出します。この呼び出しは失敗するはずですが、API を有効化するために必要です。その後、jobscheduler 14 コマンドを再実行します。

考えられる理由:

Google Play ストアを更新する必要があります。

解決方法:

  1. Google アカウントでデバイスまたはエミュレータにログインします。
  2. [Google Play ストア] > [プロフィール アイコン] > [設定] > [概要] に移動します。「Play ストアのバージョン」という見出しの下にある [Play ストアを更新] をタップします。

チケットを作成する

上記の手順を試してもエラーが解決しない場合は、次の情報を含むチケットを作成します。

  1. 使用しているリリースは何ですか?(デベロッパー プレビューベータ版のどちらですか?)使用しているバージョンは何ですか?バージョン コードは、[設定] > [デバイス情報] > [ビルド番号] で確認できます。
  2. ベータ版リリースを使用している場合は、adb shell getprop | grep build.version.extensions を実行して、結果をチケットに含めます。
  3. デバイスに搭載されている Google Play 開発者サービスのバージョンは何ですか?adb shell dumpsys package com.google.android.gms | grep versionName を実行し、コマンドの結果をチケットに含めます。
  4. バグの完全レポートを含めます。完全なバグレポートを取得するには、adb bugreport を実行するか、こちらの手順に沿って操作します。