Tài liệu này mô tả cách khắc phục các sự cố thường gặp khi thiết lập Hộp cát về quyền riêng tư trên Android. Nếu bạn gặp phải một lỗi không có trong hướng dẫn này, hãy cho chúng tôi biết.
Một số lỗi có thể có nhiều lý do dẫn đến việc lỗi đó được gửi để xử lý. Dưới đây là một số lỗi thường gặp hơn và cách khắc phục. Tuy nhiên, bạn có thể gặp cùng một thông báo lỗi nhưng lỗi đó lại xảy ra vì một lý do khác.
Trước khi bạn khắc phục sự cố
Tắt tính năng cập nhật cấu hình thiết bị
Khi khắc phục bất kỳ sự cố nào mà bạn gặp phải khi kiểm thử Hộp cát về quyền riêng tư, bước đầu tiên bạn cần làm là tắt tính năng cập nhật cấu hình thiết bị. Việc này giúp đảm bảo rằng thiết bị của bạn không tìm nạp các cấu hình đã cập nhật từ máy chủ và vô tình tắt Hộp cát về quyền riêng tư trên thiết bị kiểm thử.
Dùng lệnh sau để tắt tính năng cập nhật cấu hình thiết bị:
adb shell device_config set_sync_disabled_for_tests persistent
Nếu muốn bật lại tính năng cập nhật cấu hình thiết bị sau khi kiểm thử, bạn có thể dùng lệnh sau:
adb shell device_config set_sync_disabled_for_tests none
Bật tính năng ghi nhật ký chi tiết của các dịch vụ quảng cáo
Tính năng ghi nhật ký chi tiết của các dịch vụ quảng cáo cung cấp thêm ngữ cảnh về những lỗi mà bạn đang gặp phải. Để bật tính năng này, hãy dùng lệnh sau:
adb shell setprop log.tag.adservices VERBOSE
Đảm bảo bạn đã định cấu hình thiết bị đúng cách
Nếu vừa mới tắt tính năng cập nhật cấu hình thiết bị, thì bạn nên chạy lại các bước sau để đảm bảo thiết bị được định cấu hình đúng cách và không thay đổi trong suốt quá trình kiểm thử.
- Bật PPAPI bằng các lệnh adb thích hợp.
- Đăng ký thiết bị hoặc huỷ kích hoạt đăng ký, tuỳ thuộc vào mục tiêu của bạn.
Kiểm tra mã để đảm bảo các PPAPI có sẵn
Bạn có thể thêm các lượt kiểm tra vào cơ sở mã để đảm bảo thiết bị có những phiên bản chính xác cần thiết cho Hộp cát về quyền riêng tư.
Nếu bạn đang dùng một bản phát hành Beta thông qua tiện ích SDK, hãy kiểm tra để xác định đúng phiên bản của bản dựng và tiện ích SDK:
Nếu bạn đang sử dụng bản phát hành Beta thông qua Thư viện Jetpack, thì hàm khởi chạy sẽ trả về null
trong trường hợp không có Hộp cát về quyền riêng tư trên thiết bị của bạn. Ví dụ:
Đối với bản phát hành bất kỳ, hãy kiểm tra Dịch vụ Google Play:
Trường hợp ngoại lệ về bảo mật
Lỗi ngoại lệ về bảo mật thường phát sinh khi có sự cố nào đó không cho phép truy cập vào tài nguyên Hộp cát về quyền riêng tư.
Chưa yêu cầu cấp quyền
Lỗi:
Failed to get Ad ID: java.lang.SecurityException: Caller is not authorized to
call this API. Permission was not requested
.
Lý do có thể có:
Bạn phải khai báo quyền truy cập vào mã nhận dạng quảng cáo.
Cách khắc phục:
Khai báo quyền này trong AndroidManifest.xml
của bạn:
<uses-permission android:name="android.permission.ACCESS_ADSERVICES_AD_ID" />
Phương thức gọi không được uỷ quyền
Lỗi:
Failed to find resolveInfo for adServices service. Intent action:
android.adservices.adid.AdIdProviderService
Failed to find AdServices services
Caller not authorized
Lý do có thể có:
Bạn chưa đăng ký thiết bị đúng cách. Hãy đảm bảo rằng bạn đã làm theo mọi hướng dẫn đăng ký, bao gồm cả các bước sau khi đăng ký để định cấu hình thiết bị.
Lý do có thể có:
URL đăng ký không khớp.
Cách khắc phục:
- Kiểm tra dữ liệu đăng ký của bạn để xem có sự khác biệt giữa URL mà bạn đang sử dụng trong mã và URL bạn đã đăng ký với Hộp cát về quyền riêng tư hay không. Ví dụ: có thể bạn đang dùng
https://adtech.example.com/source
trong khi URL đã đăng ký lại làhttps://adtech.example.com/register_source
- Điều chỉnh mã sao cho khớp với URL đã đăng ký. Ví dụ: bạn có thể điều chỉnh dòng này trong ứng dụng mẫu để nối "/register_source" vào URL thay vì "/source".
Nếu bạn vẫn thấy lỗi này:
Có thể công ty của bạn không có trong danh sách đăng ký hoặc công ty đã đăng ký nhưng không có trong danh sách cho phép của tệp kê khai của ứng dụng. Hãy liên hệ theo địa chỉ android-ps-support@google.com để đảm bảo tổ chức của bạn đã đăng ký Hộp cát về quyền riêng tư.
Phương thức gọi không được phép
Lỗi:
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
.
Lý do có thể có:
Tên gói không có trong danh sách cho phép.
Cách khắc phục:
Cho phép tất cả các tên gói trong danh sách cho phép:
Nếu bạn sử dụng trực tiếp adb shell:
Các lệnh được liệt kê trước đó hoạt động đối với bash và các shell khác, nhưng nếu khởi động adb shell trực tiếp và thử chạy các lệnh này, thì bạn không cần dùng ký tự thoát cho dấu ngoặc kép. Thay vào đó, hãy chạy các lệnh như sau:
Cách khắc phục:
Thêm tên gói vào danh sách cho phép:
adb shell device_config put adservices ppapi_app_allow_list [package name]
Kiểm tra để đảm bảo tên gói của bạn có trong danh sách cho phép:
adb shell device_config get adservices ppapi_app_allow_list
Nếu cần, bạn có thể dùng lệnh sau để xoá danh sách cho phép:
adb shell device_config delete adservices ppapi_app_allow_list
Các trường hợp ngoại lệ liên quan đến trạng thái không hợp lệ
Các trường hợp ngoại lệ liên quan đến trạng thái không hợp lệ cho biết một phương thức đã được gọi vào thời điểm không hợp lệ hoặc không phù hợp, khi môi trường hoặc ứng dụng không ở trạng thái thích hợp để thực hiện thao tác đã yêu cầu.
Các trường hợp ngoại lệ liên quan đến trạng thái không hợp lệ: Dịch vụ không có sẵn
Lỗi:
com.example.measurement.sampleapp E Failed binding to measurement service:
java.lang.IllegalStateException: Service is not available
Lý do có thể có:
Nút tắt khẩn cấp phải được vô hiệu hoá.
Cách khắc phục:
Bạn có thể dùng lệnh sau để vô hiệu hoá nút tắt khẩn cấp:
adb shell 'device_config put adservices global_kill_switch false'
Lý do có thể có:
Chưa nhận được sự đồng ý của người dùng.
Cách khắc phục:
Bạn có thể chạy:
adb shell am start -n com.google.android.adservices.api/com.android.adservices.ui.settings.activities.AdServicesSettingsMainActivity
Sau khi lệnh trước đó hoàn tất, hãy chuyển tuỳ chọn "Enable Privacy Sandbox" (Bật Hộp cát về quyền riêng tư) thành "On" (Bật).
Các lỗi xảy ra với lệnh adb
Không tìm được lệnh
Lỗi:
Could not find job 14 in package com.google.android.adservices.api/ user 0
Lý do có thể có:
Chưa kích hoạt API Hộp cát về quyền riêng tư.
Cách khắc phục: Trước khi chạy lệnh này, hãy gọi một trong các API Hộp cát về quyền riêng tư, chẳng hạn như registerSource()
, getTopics()
hoặc selectAds()
. Lệnh gọi này dự kiến sẽ không thành công nhưng cần thiết để kích hoạt API. Sau đó, hãy chạy lại lệnh jobscheduler 14
.
Lý do có thể có:
Cần cập nhật Cửa hàng Google Play.
Cách khắc phục:
- Đăng nhập vào thiết bị hoặc trình mô phỏng bằng Tài khoản Google của bạn.
- Chuyển đến Cửa hàng Google Play > biểu tượng hồ sơ > Cài đặt > Giới thiệu. Trong tiêu đề Phiên bản Cửa hàng Play, hãy nhấn vào Cập nhật Cửa hàng Play.
Gửi một phiếu yêu cầu hỗ trợ
Nếu các bước này không khắc phục được lỗi, hãy gửi một phiếu yêu cầu hỗ trợ và cung cấp những thông tin sau:
- Bạn đang sử dụng bản phát hành nào, Bản dùng thử cho nhà phát triển hay Bản Beta? Bạn đang sử dụng phiên bản nào? Bạn có thể tìm thấy mã phiên bản trong phần Cài đặt > Giới thiệu về điện thoại > Số bản dựng.
- Nếu bạn đang sử dụng một bản phát hành Beta, hãy chạy
adb shell getprop | grep build.version.extensions
và đưa kết quả vào phiếu yêu cầu hỗ trợ của bạn. - Thiết bị của bạn có phiên bản Dịch vụ Google Play nào? Chạy
adb shell dumpsys package com.google.android.gms | grep versionName
và đưa kết quả của lệnh đó vào phiếu yêu cầu hỗ trợ của bạn. - Gửi kèm một báo cáo lỗi đầy đủ. Bạn có thể tạo một báo cáo lỗi đầy đủ bằng cách chạy
adb bugreport
hoặc bằng cách theo hướng dẫn.