SdkSandboxManager
public
final
class
SdkSandboxManager
extends Object
java.lang.Object | |
↳ | android.app.sdksandbox.SdkSandboxManager |
מספק ממשקי API לטעינת SDKs
לתוך
תהליך Sandbox של SDK ואז אינטראקציה איתם.
'ארגז חול (sandbox)' של ערכת ה-SDK הוא תהליך של JavaScript שפועל בטווח uid נפרד. לכל אפליקציה יכול להיות SDK משלה תהליך ארגז חול (sandbox).
האפליקציה צריכה קודם להצהיר על ערכות SDK שהיא תלויה בהן במניפסט שלה באמצעות התג <uses-sdk-library>
. אפליקציות יכולות לטעון ב-Sandbox של ה-SDK רק ערכות SDK שהן תלויות בהן.
סיכום
מחלקות מקוננות | |
---|---|
interface |
SdkSandboxManager.SdkSandboxProcessDeathCallback
קריאה חוזרת (callback) למעקב אחר אירועים של מוות ב-SDK ב-SDK. |
שיטות ציבוריות | |
---|---|
void
|
addSdkSandboxProcessDeathCallback(Executor callbackExecutor, SdkSandboxManager.SdkSandboxProcessDeathCallback callback)
הוספת קריאה חוזרת (callback) שנרשמת לאירועי מחזור חיים של ארגז חול ב-SDK, כמו Sandbox של SDK מוות. |
void
|
addSyncedSharedPreferencesKeys(Set<String> keys)
הוספת מפתחות לקבוצת מפתחות שמסונכרנים מברירת המחדל של האפליקציה |
List<AppOwnedSdkSandboxInterface>
|
getAppOwnedSdkSandboxInterfaces()
אחזור רשימה של |
List<SandboxedSdk>
|
getSandboxedSdks()
אחזור מידע על ערכות SDK שנטענות ב-Sandbox. |
static
int
|
getSdkSandboxState()
הפונקציה מחזירה את המצב הנוכחי של הזמינות של תכונת ה-Sandbox של ה-SDK. |
Set<String>
|
getSyncedSharedPreferencesKeys()
הפונקציה מחזירה את המפתחות המוגדרים שמסונכרנים מברירת המחדל של האפליקציה |
void
|
loadSdk(String sdkName, Bundle params, Executor executor, OutcomeReceiver<SandboxedSdk, LoadSdkException> receiver)
טוענת את ה-SDK בתהליך Java של ארגז חול של SDK. |
void
|
registerAppOwnedSdkSandboxInterface(AppOwnedSdkSandboxInterface appOwnedSdkSandboxInterface)
רושם את |
void
|
removeSdkSandboxProcessDeathCallback(SdkSandboxManager.SdkSandboxProcessDeathCallback callback)
הסרה של |
void
|
removeSyncedSharedPreferencesKeys(Set<String> keys)
הסרת מפתחות מקבוצת מפתחות שנוספו באמצעות המפתחות שהוסרו יימחקו מ-Sandbox של ה-SDK אם הם כבר סונכרנו. |
void
|
requestSurfacePackage(String sdkName, Bundle params, Executor callbackExecutor, OutcomeReceiver<Bundle, RequestSurfacePackageException> receiver)
שולחת ל-SDK בקשה לחבילת פלטפורמה. |
void
|
startSdkSandboxActivity(Activity fromActivity, IBinder sdkActivityToken)
הפעולה מפעילה |
void
|
unloadSdk(String sdkName)
מסירה את ערכת ה-SDK שנטענה בעבר על ידי מבצע הקריאה החוזרת. |
void
|
unregisterAppOwnedSdkSandboxInterface(String name)
מבטל את הרישום של |
שיטות שעברו בירושה | |
---|---|
קבועים
⁄_DISPLAY_ID
public static final String EXTRA_DISPLAY_ID
שם המפתח שבו יש להשתמש בשדות החבילה של requestSurfacePackage(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.os.OutcomeReceiver)
, הערך שלו צריך להגדיר את המזהה השלם של הלוגיקה הלוגית.
תצוגה כדי להציג את SurfacePackage
.
ערך קבוע: " android.app.sdksandbox.extra.DISPLAY_ID"
Additional_HEIGHT_IN_PIXELS
public static final String EXTRA_HEIGHT_IN_PIXELS
שם המפתח שבו יש להשתמש בשדות החבילה של requestSurfacePackage(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.os.OutcomeReceiver)
. הערך שלו צריך להגדיר את גובה המספר השלם של SurfacePackage
בפיקסלים.
ערך קבוע: "android.app.sdksandbox.extra.HEIGHT_IN_PIXELS"
VAR_HOST_TOKEN
public static final String EXTRA_HOST_TOKEN
שם המפתח שבו יש להשתמש בשדות החבילה של requestSurfacePackage(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.os.OutcomeReceiver)
. הערך שלו צריך להציג את האסימון שהוחזר על ידי SurfaceView.getHostToken()
אחרי שהערך של SurfaceView
נוסף להיררכיית התצוגות. כדי להפעיל דיווח על מקרי ANR, אפשר להשתמש רק בערך שאינו null.
ערך קבוע: "android.app.sdksandbox.extra.HOST_TOKEN"
Additional_SURFACE_PACKAGE
public static final String EXTRA_SURFACE_PACKAGE
שם המפתח בחבילה שמועבר לפונקציה onResult
של OutcomeReceiver
, שהוא השדה requestSurfacePackage(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.os.OutcomeReceiver)
, והערך שלו הוא SurfacePackage
המבוקש.
ערך קבוע: 'android.app.sdksandbox.extra.SURFACE_PACKAGE'
VAR_WIDTH_IN_PIXELS
public static final String EXTRA_WIDTH_IN_PIXELS
שם המפתח שבו יש להשתמש בשדות החבילה של requestSurfacePackage(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.os.OutcomeReceiver)
. הערך שלו צריך להגדיר את רוחב המספר השלם של SurfacePackage
בפיקסלים.
ערך קבוע: " android.app.sdksandbox.extra.WIDTH_IN_PIXELS"
LOAD_SDK_ALREADY_LOADED
public static final int LOAD_SDK_ALREADY_LOADED
ערכת ה-SDK כבר נטענה.
זה סימן שאפליקציית הלקוח ניסתה לטעון מחדש את אותו SDK על ידי קריאה ל-loadSdk(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.os.OutcomeReceiver)
לאחר
נטען בהצלחה.
ערך קבוע: 101 (0x00000065)
LOAD_SDK_INTERNAL_ERROR
public static final int LOAD_SDK_INTERNAL_ERROR
אירעה שגיאה פנימית בטעינת ה-SDK.
הדבר מצביע על כך שאירעה שגיאה פנימית כללית במהלך החלת הקריאה מהלקוח תרגום מכונה.
ערך קבוע: 500 (0x000001f4)
LOAD_SDK_NOT_FOUND
public static final int LOAD_SDK_NOT_FOUND
ערכת ה-SDK לא נמצאה.
הקוד הזה מצביע על כך שאפליקציית הלקוח ניסתה לטעון SDK שלא קיים באמצעות קריאה ל-loadSdk(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.os.OutcomeReceiver)
.
ערך קבוע: 100 (0x00000064)
LOAD_SDK_SDK_DEFINED_ERROR
public static final int LOAD_SDK_SDK_DEFINED_ERROR
אירעה שגיאת SDK לאחר הטעינה.
קוד השגיאה מעיד על כך שאירעה שגיאה ב-SDK במהלך אתחול לאחר הטעינה.
אפשר לקבל פרטים כאלה מהחבילה שהוחזרה ב-LoadSdkException
דרך
OutcomeReceiver
הועבר אל SdkSandboxManager#loadSdk
.
ערך קבוע: 102 (0x00000066)
LOAD_SDK_SDK_SANDBOX_DISABLED
public static final int LOAD_SDK_SDK_SANDBOX_DISABLED
ה-Sandbox של ה-SDK מושבת.
הסטטוס הזה מצביע על כך שה-Sandbox של ה-SDK מושבת. כל ניסיון נוסף לטעון ערכות SDK בזמן גם האתחול הזה ייכשל.
ערך קבוע: 103 (0x00000067)
REQUEST_SURFACE_PACKAGE_INTERNAL_ERROR
public static final int REQUEST_SURFACE_PACKAGE_INTERNAL_ERROR
אירעה שגיאה פנימית במהלך הבקשה של SurfacePackage
.
הדבר מצביע על כך שאירעה שגיאה פנימית כללית במהלך בקשת
SurfacePackage
ערך קבוע: 700 (0x000002bc)
REQUEST_SURFACE_PACKAGE_SDK_NOT_LOADED
public static final int REQUEST_SURFACE_PACKAGE_SDK_NOT_LOADED
ערכת ה-SDK לא נטענת כשמבקשים SurfacePackage
.
הפעולה הזו מציינת שה-SDK שעבורו נשלחה הבקשה ל-SurfacePackage
לא
כי ארגז החול מת או כי הוא לא נטען מלכתחילה.
ערך קבוע: 701 (0x000002bd)
SDK_SANDBOX_processing_NOT_AVAILABLE
public static final int SDK_SANDBOX_PROCESS_NOT_AVAILABLE
תהליך ה-Sandbox של ה-SDK לא זמין.
זה סימן שתהליך ה-Sandbox של ה-SDK לא זמין כי הוא הפסיק לפעול. מנותקות או שלא נוצרו מלכתחילה.
ערך קבוע: 503 (0x000001f7)
SDK_SANDBOX_SERVICE
public static final String SDK_SANDBOX_SERVICE
שימוש יחד עם Context#getSystemService(String)
כדי לאחזר SdkSandboxManager
לאינטראקציה עם ערכות ה-SDK ששייכות לאפליקציית הלקוח הזו.
ערך קבוע: 'SDK_sandbox'
SDK_SANDBOX_STATE_DISABLED
public static final int SDK_SANDBOX_STATE_DISABLED
ה-Sandbox של ה-SDK מושבת.
SdkSandboxManager
ממשקי API מוסתרים. ניסיונות להתקשר אליו יובילו לUnsupportedOperationException
.
ערך קבוע: 0 (0x00000000)
SDK_SANDBOX_STATE_ enabled_processing_ISOLATION
public static final int SDK_SANDBOX_STATE_ENABLED_PROCESS_ISOLATION
ה-Sandbox של ה-SDK מופעל.
האפליקציה יכולה להשתמש בממשקי API של SdkSandboxManager
כדי לטעון SDKs
שהיא תלויה
תהליך ה-Sandbox של ה-SDK התואם.
ערך קבוע: 2 (0x00000002)
שיטות ציבוריות
addSdkSandboxProcessDeathCallback
public void addSdkSandboxProcessDeathCallback (Executor callbackExecutor, SdkSandboxManager.SdkSandboxProcessDeathCallback callback)
הוספת קריאה חוזרת (callback) שנרשמת לאירועי מחזור חיים של ארגז חול ב-SDK, כמו Sandbox של SDK מוות. אם ארגז החול עוד לא נוצר בזמן הקריאה, הבקשה מאוחסנים עד שארגז חול נוצר, ואז הוא יופעל באותו ארגז חול. יותר מאחת ניתן להוסיף קריאות חוזרות (callback) כדי לזהות מוות, והן לא יוסרו כשארגז החול יכבה.
פרמטרים | |
---|---|
callbackExecutor |
Executor : ה-Executor שבו תופעל הקריאה החוזרת
הערך הזה לא יכול להיות null .
אירועי קריאה חוזרת ואירועי האזנה נשלחים באמצעות
Executor , דרך קלה לקבוע איזה שרשור
בשימוש. כדי לשלוח אירועים דרך ה-thread הראשי
אפשר להשתמש
Context.getMainExecutor()
אם לא, צריך לציין Executor ששולח לשרשור מתאים. |
callback |
SdkSandboxManager.SdkSandboxProcessDeathCallback : ה-SdkSandboxProcessDeathCallback שיקבל את ארגז החול של ה-SDK
אירועים במחזור החיים.
הערך הזה לא יכול להיות null . |
addSyncedSharedPreferencesKeys
public void addSyncedSharedPreferencesKeys (Set<String> keys)
הוספת מפתחות לקבוצת מפתחות שמסונכרנים מברירת המחדל של האפליקציה SharedPreferences
ל-SDK
Sandbox.
נתונים מסונכרנים יהיו זמינים לקריאה לערכות SDK באמצעות ה-API של SdkSandboxController.getClientSharedPreferences()
.
כדי להפסיק את הסנכרון של מפתח שנוסף באמצעות ה-API הזה, צריך להשתמש ב-removeSyncedSharedPreferencesKeys(java.util.Set)
.
הסנכרון יופסק אם האפליקציה תופעל מחדש והמשתמש יצטרך לקרוא שוב ל-API הזה כדי לבנות את המאגר מחדש של מפתחות לסנכרון.
הערה: הכיתה הזו לא תומכת בשימוש בכמה תהליכים.
פרמטרים | |
---|---|
keys |
Set : קבוצת מפתחות שיסונכרנו עם Sandbox.
הערך הזה לא יכול להיות null . |
getAppOwnerSdkSandboxInterfaces
public List<AppOwnedSdkSandboxInterface> getAppOwnedSdkSandboxInterfaces ()
אחזור רשימה של AppOwnedSdkSandboxInterface
שנרשמו לאפליקציה
החזרות | |
---|---|
List<AppOwnedSdkSandboxInterface> |
רשימה ריקה אם המידע להתקשרות לא נמצא במפה. אחרת, רשימה של AppOwnedSdkSandboxInterface
הערך הזה לא יכול להיות null . |
getSandboxedSdks
public List<SandboxedSdk> getSandboxedSdks ()
אחזור מידע על ערכות SDK שנטענות ב-Sandbox.
החזרות | |
---|---|
List<SandboxedSdk> |
רשימה של SandboxedSdk שמכילה את כל ערכות ה-SDK שנטענו כרגע.
הערך הזה לא יכול להיות null . |
getSdkSandboxState
public static int getSdkSandboxState ()
הפונקציה מחזירה את המצב הנוכחי של הזמינות של תכונת ה-Sandbox של ה-SDK.
החזרות | |
---|---|
int |
הערך הוא SDK_SANDBOX_STATE_DISABLED , או SDK_SANDBOX_STATE_ENABLED_PROCESS_ISOLATION |
getSyncedSharedPreferencesKeys
public Set<String> getSyncedSharedPreferencesKeys ()
הפונקציה מחזירה את המפתחות המוגדרים שמסונכרנים מברירת המחדל של האפליקציה SharedPreferences
ל-
את ה-Sandbox של ה-SDK.
החזרות | |
---|---|
Set<String> |
הערך הזה לא יכול להיות null . |
LoadSdk
public void loadSdk (String sdkName, Bundle params, Executor executor, OutcomeReceiver<SandboxedSdk, LoadSdkException> receiver)
טוענת את ה-SDK בתהליך Java של ארגז חול של SDK.
טעינה אסינכרונית של ספריית ה-SDK עם sdkName
לתהליך ארגז חול של SDK.
המתקשר יקבל הודעה דרך receiver
.
מבצע הקריאה החוזרת צריך כבר להצהיר על SDKs
שזה תלוי במניפסט שלו באמצעות התג <uses-sdk-library>
. המתקשר יכול לטעון רק SDKs
, תלוי ב-SDK
Sandbox.
כשאפליקציית הלקוח טוענת את ערכת ה-SDK הראשונה, תתבצע הרצה של תהליך חדש של ארגז חול (Sandbox) ל-SDK נוצר. אם כבר נוצר Sandbox לאפליקציית הלקוח, ערכות SDK נוספות ייטענו לאותו ארגז חול.
ניתן להפעיל את ה-API הזה רק בזמן שהמתקשר פועל בחזית. שיחות מ-
התוצאה תהיה ברקע LoadSdkException
בreceiver
.
פרמטרים | |
---|---|
sdkName |
String : השם של ה-SDK לטעינה.
הערך הזה לא יכול להיות null . |
params |
Bundle : פרמטרים נוספים שיועברו ל-SDK בפורמט של Bundle
כפי שהוסכם בין הלקוח לבין ה-SDK.
הערך הזה לא יכול להיות null . |
executor |
Executor : ה-Executor שאליו יש להפעיל את המקבל.
הערך הזה לא יכול להיות null .
אירועי קריאה חוזרת ואירועי האזנה נשלחים באמצעות
Executor , דרך קלה לקבוע איזה שרשור
בשימוש. כדי לשלוח אירועים דרך ה-thread הראשי
אפשר להשתמש
Context.getMainExecutor()
אם לא, צריך לציין Executor ששולח לשרשור מתאים. |
receiver |
OutcomeReceiver : הפרמטר הזה מקבל SandboxedSdk בהפעלה מוצלחת, או LoadSdkException .
הערך הזה לא יכול להיות null . |
רישוםAppOwnerSdkSandboxInterface
public void registerAppOwnedSdkSandboxInterface (AppOwnedSdkSandboxInterface appOwnedSdkSandboxInterface)
רושם את AppOwnedSdkSandboxInterface
לתהליך אפליקציה.
רישום של AppOwnedSdkSandboxInterface
שיש לו שם זהה לזה של בעבר
בממשק רשום, התוצאה תהיה IllegalStateException
.
AppOwnedSdkSandboxInterface#getName()
הוא שם הממשק.
פרמטרים | |
---|---|
appOwnedSdkSandboxInterface |
AppOwnedSdkSandboxInterface : ה-App OwnerSdkSandboxInterface להרשמה
הערך הזה לא יכול להיות null . |
removeSdkSandboxProcessDeathCallback
public void removeSdkSandboxProcessDeathCallback (SdkSandboxManager.SdkSandboxProcessDeathCallback callback)
הסרה של SdkSandboxProcessDeathCallback
שנוסף בעבר באמצעות addSdkSandboxProcessDeathCallback(java.util.concurrent.Executor, android.app.sdksandbox.SdkSandboxManager.SdkSandboxProcessDeathCallback)
פרמטרים | |
---|---|
callback |
SdkSandboxManager.SdkSandboxProcessDeathCallback : ה-SdkSandboxProcessDeathCallback שנוסף בעבר באמצעות
SdkSandboxManager#addSdkSandboxProcessDeathCallback(Executor,
SdkSandboxProcessDeathCallback)
הערך הזה לא יכול להיות null . |
removeSyncedSharedPreferencesKeys
public void removeSyncedSharedPreferencesKeys (Set<String> keys)
הסרת מפתחות מקבוצת מפתחות שנוספו באמצעות addSyncedSharedPreferencesKeys(java.util.Set)
המפתחות שהוסרו יימחקו מ-Sandbox של ה-SDK אם הם כבר סונכרנו.
פרמטרים | |
---|---|
keys |
Set : קבוצה של שמות מפתחות שכבר לא צריכים להיות מסונכרנים עם Sandbox.
הערך הזה לא יכול להיות null . |
requestSurfacePackage
public void requestSurfacePackage (String sdkName, Bundle params, Executor callbackExecutor, OutcomeReceiver<Bundle, RequestSurfacePackageException> receiver)
שולחת ל-SDK בקשה לחבילת פלטפורמה.
אחרי שאפליקציית הלקוח מקבלת אות לגבי טעינת SDK מוצלחת,
הוסיף SurfaceView
להיררכיית התצוגות, הוא עשוי לבקש באופן אסינכרוני
SurfacePackage
כדי לעבד תצוגה מפורטת מה-SDK.
כשה-SurfacePackage
יהיה מוכן, הקריאה החוזרת (callback) של OutcomeReceiver#onResult
של
receiver
שהועבר יופעל. הקריאה החוזרת (callback) הזו תכיל Bundle
שיכיל את המפתח SdkSandboxManager#EXTRA_SURFACE_PACKAGE
המשויך הוא הערך המבוקש SurfacePackage
.
הערך של params
שהועבר חייב להכיל את המפתחות הבאים: EXTRA_WIDTH_IN_PIXELS
, SdkSandboxManager#EXTRA_HEIGHT_IN_PIXELS
,
SdkSandboxManager#EXTRA_DISPLAY_ID
וגם SdkSandboxManager#EXTRA_HOST_TOKEN
. אם המיקום
כל אחד מהמפתחות האלה חסר או לא חוקי, לכן תתבצע פסילה של IllegalArgumentException
.
ניתן להפעיל את ה-API הזה רק בזמן שהמתקשר פועל בחזית. שיחות מ-
הרקע יגרום להחזרת RequestSurfacePackage ולשפר את ההגדרה של receiver
.
פרמטרים | |
---|---|
sdkName |
String : השם של ה-SDK שנטען ל-Sandbox של ה-SDK.
הערך הזה לא יכול להיות null . |
params |
Bundle : הפרמטרים שאפליקציית הלקוח מעבירה ל-SDK.
הערך הזה לא יכול להיות null . |
callbackExecutor |
Executor : ה-Executor שבו תופעל הקריאה החוזרת
הערך הזה לא יכול להיות null .
אירועי קריאה חוזרת ואירועי האזנה נשלחים באמצעות
Executor , דרך קלה לקבוע איזה שרשור
בשימוש. כדי לשלוח אירועים דרך ה-thread הראשי
אפשר להשתמש
Context.getMainExecutor()
אם לא, צריך לציין Executor ששולח לשרשור מתאים. |
receiver |
OutcomeReceiver : הפעולה הזו מחזירה Bundle עם הצלחה שתכיל את המפתח
SdkSandboxManager#EXTRA_SURFACE_PACKAGE עם ערך SurfacePackage , או
RequestSurfacePackageException נכשל.
הערך הזה לא יכול להיות null . |
קליעות | |
---|---|
IllegalArgumentException |
אם params לא מכיל את כל המפתחות הנדרשים. |
startSdkSandboxActivity
public void startSdkSandboxActivity (Activity fromActivity, IBinder sdkActivityToken)
הפעולה מפעילה Activity
ב-Sandbox של ה-SDK.
הפונקציה הזו תתחיל Activity
חדש באותה משימה של fromActivity
שהועברה ותעביר אותו ל-SDK ששיתף את קובץ ה-sdkActivityToken
שהועבר
מזהה בקשה מאותה ערכת SDK כדי לקבע את ה-Activity
הזה.
Activity
לא יתחיל במקרים הבאים:
- האפליקציה שולחת קריאה ל-API הזה ברקע.
- ערך ה-
sdkActivityToken
שהועבר לא תואם לבקשה שלActivity
ליצור את ה-SDK ששותף עם אפליקציית המתקשר/ת. - ערכת ה-SDK ששותפה את
sdkActivityToken
שהועבר הסירה את הבקשה הזוActivity
. - ארגז החול
Activity
כבר נוצר.
פרמטרים | |
---|---|
fromActivity |
Activity : הActivity ישמש להפעלת ארגז החול החדש Activity על ידי קריאה של Activity#startActivity(Intent) אליו.
הערך הזה לא יכול להיות null . |
sdkActivityToken |
IBinder : המזהה שמשותף על ידי ה-SDK שמבקש את Activity .
הערך הזה לא יכול להיות null . |
unloadSdk
public void unloadSdk (String sdkName)
מסירה את ערכת ה-SDK שנטענה בעבר על ידי מבצע הקריאה החוזרת.
לא בטוח שהזיכרון שהוקצה ל-SDK הזה ישוחרר מיד. הכול
שיחות נוספות אל requestSurfacePackage(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.os.OutcomeReceiver)
עבור sdkName
הנתון ייכשל.
ניתן להפעיל את ה-API הזה רק בזמן שהמתקשר פועל בחזית. שיחות מ-
רקע כזה יגרום להשלכה של SecurityException
.
פרמטרים | |
---|---|
sdkName |
String : שם ה-SDK שרוצים להסיר.
הערך הזה לא יכול להיות null . |
ביטול הרישוםAppOwnerSdkSandboxInterface
public void unregisterAppOwnedSdkSandboxInterface (String name)
מבטל את הרישום של ERROR(/AppOwnedSdkSandboxInterfaces)
לתהליך של אפליקציה.
פרמטרים | |
---|---|
name |
String : השם שבו רשום AppOwnerSdkSandboxInterface.
הערך הזה לא יכול להיות null . |