מדריך לפתרון בעיות בארגז החול לפרטיות ב-Android

במסמך הזה נסביר איך לפתור בעיות נפוצות שקשורות להגדרת הפרטיות Sandbox ב-Android. אם מופיעה שגיאה שלא נמצאה במדריך הזה, נשמח לדעת.

לשגיאות מסוימות יש כמה סיבות אפשריות להשלכה. בהמשך מופיעות חלק מהשגיאות הנפוצות יותר והתיקונים שלהן, אבל ייתכן שתיתקלו לאותה הודעת שגיאה מסיבה אחרת.

לפני שמתחילים לפתור את הבעיה

השבתת העדכונים להגדרות המכשיר

במהלך פתרון בעיות שבהן נתקלת בארגז החול לפרטיות הבדיקה, השלב הראשון הוא השבתת עדכוני התצורה של המכשיר. הזה מבטיחה שהמכשיר לא יאחזר הגדרות מעודכנות מהשרת ולהשבית בטעות את ארגז החול לפרטיות במכשיר הבדיקה.

כדי להשבית את עדכוני התצורה של המכשיר, משתמשים בפקודה הבאה:

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

צריך לוודא שהמכשיר הוגדר בצורה נכונה

אם השבתת לאחרונה את עדכוני ההגדרות של המכשיר, מומלץ להפעיל את שוב ושוב כדי לוודא שהמכשיר מוגדר כראוי ונשאר במהלך הבדיקה.

  • הפעלת ה-PPAPI עם פקודות adb הרלוונטיות.
  • צריך לרשום את המכשיר או להשבית את ההרשמה, בהתאם ליעדים.

צריך לבדוק את הקוד כדי לוודא שממשקי ה-PPAPI זמינים

אפשר להוסיף בדיקות ל-codebase כדי לוודא שבמכשיר את הגרסאות הנכונות שהוא צריך לארגז החול לפרטיות.

אם משתמשים בגרסת בטא דרך תוספי SDK, כדאי לבדוק מהו ה-build הנכון והגרסה של תוסף ה-SDK:

אם משתמשים בגרסת בטא דרך ספריות Jetpack, האתחול הפונקציה מחזירה את הערך null אם ארגז החול לפרטיות לא זמין במכשיר. לדוגמה:

לכל גרסה, בודקים את Google Play Services:

חריגי אבטחה

שגיאות חריגות אבטחה מתרחשות בדרך כלל כאשר למשהו אין הרשאה לגשת למשאב של ארגז החול לפרטיות.

לא נשלחה בקשה להרשאה

שגיאה:

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

הסיבה הפוטנציאלית:

עליכם להצהיר על הרשאת גישה למזהה המודעה.

תיקון:

להצהיר על ההרשאה ב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. בדקו את נתוני ההרשמות שלכם כדי לראות אם יש פערים בין כתובת האתר שבה השתמשת בקוד שלך ואת כתובת האתר שרשמת במדיניות הפרטיות ארגז חול. לדוגמה, ייתכן שהשתמשת ב-https://adtech.example.com/source אבל כתובת ה-URL שרשומה הייתה https://adtech.example.com/register_source
  2. צריך לשנות את הקוד כך שיתאים לכתובת ה-URL הרשומה. לדוגמה, אפשר לשנות את השורה באפליקציה לדוגמה ומוסיפים את המחרוזת ' /register_source' לכתובת ה-URL במקום זאת של ' /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 ומעטפת רגילה של bash, אבל אם אתם מפעילים את ה-adb ישירות ולנסות להריץ את הפקודות, אתם לא אמורים לסמן בתו בריחה (escape) ציטוטים. במקום זאת, מריצים את הפקודות כך:

תיקון:

מוסיפים את שם החבילה לרשימת ההיתרים:

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. איזו גרסה אתם משתמשים בה, תצוגה מקדימה למפתחים או בטא? מהי הגרסה את/ה? ניתן למצוא את קוד הגרסה שלך בהגדרות > מידע על הטלפון > מספר Build.
  2. אם משתמשים בגרסת בטא, צריך להריץ את הפקודה adb shell getprop | grep build.version.extensions ולכלול את התוצאות בכרטיס.
  3. איזו גרסה של Google Play Services מותקנת במכשיר שלך? מריצים את הפקודה adb shell dumpsys package com.google.android.gms | grep versionName וכוללים את הפקודה תוצאות של הפקודה הזו בכרטיס שלכם.
  4. יש לכלול דוח מלא על הבאג. כדי לקבל דוח מלא על באג, אפשר להריץ את הפקודה adb bugreport או עד פועלים לפי ההוראות.