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를 실행하거나 다음 방법으로 전체 버그 신고를 가져올 수 있습니다. 안내에 따라 진행합니다.