SdkSandboxManager
public
final
class
SdkSandboxManager
extends Object
| java.lang.Object | |
| ↳ | android.app.sdksandbox.SdkSandboxManager |
SDKs を読み込むための API を提供します。
SDK サンドボックス プロセスを実行し、操作します。
SDK サンドボックスは、独立した uid 範囲で実行される Java プロセスです。アプリごとに独自の SDK がある場合 サンドボックス プロセスです。
アプリはまず、マニフェストで <uses-sdk-library> タグを使用して、依存する SDK を宣言する必要があります。アプリは、依存する SDK のみを SDK サンドボックスに読み込むことができます。
概要
ネストされたクラス | |
|---|---|
interface |
SdkSandboxManager.SdkSandboxProcessDeathCallback
SDK のサンドボックスの終了イベントをトラッキングするためのコールバック。 |
継承されるメソッド | |
|---|---|
定数
EXTRA_DISPLAY_ID
public static final String EXTRA_DISPLAY_ID
requestSurfacePackage(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.os.OutcomeReceiver) の Bundle フィールドで使用されるキーの名前。その値は論理要素の整数 ID を定義する必要があります。
SurfacePackage を表示します。
定数値: 「android.app.sdksandbox.extra.DISPLAY_ID」
EXTRA_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) の Bundle フィールドで使用されるキーの名前。値には SurfacePackage の整数の高さをピクセル単位で定義する必要があります。
定数値: 「android.app.sdksandbox.extra.HEIGHT_IN_PIXELS」
EXTRA_HOST_TOKEN
public static final String EXTRA_HOST_TOKEN
requestSurfacePackage(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.os.OutcomeReceiver) のバンドル フィールドで使用されるキーの名前。その値は、SurfaceView が取得された後、SurfaceView.getHostToken() によって返されるトークンを表す必要があります。
ビュー階層に追加されますANR レポートを有効にするには、null 以外の値のみを指定できます。
定数値: 「android.app.sdksandbox.extra.HOST_TOKEN」
EXTRA_SURFACE_PACKAGE
public static final String EXTRA_SURFACE_PACKAGE
requestSurfacePackage(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.os.OutcomeReceiver) のフィールドである OutcomeReceiver の onResult 関数に渡される Bundle 内のキーの名前。この値はリクエストされた SurfacePackage を表します。
定数値: 「android.app.sdksandbox.extra.SURFACE_PACKAGE」
EXTRA_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) の Bundle フィールドで使用されるキーの名前。この値は SurfacePackage の整数の幅をピクセル単位で定義する必要があります。
定数値: 「android.app.sdksandbox.extra.WIDTH_IN_PIXELS」
LOAD_SDK_ALREADY_LOADED
public static final int LOAD_SDK_ALREADY_LOADED
SDK はすでに読み込まれています。
これは、クライアント アプリケーションが、loadSdk(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.os.OutcomeReceiver) を呼び出して同じ SDK を再読み込みしようとしたことを示します。
読み込みが完了しました。
定数値: 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 が見つかりませんでした。
クライアント アプリが loadSdk(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.os.OutcomeReceiver) を呼び出して、存在しない SDK を読み込もうとしたことを示します。
定数値: 100 人 (0x00000064)。
LOAD_SDK_SDK_DEFINED_ERROR
public static final int LOAD_SDK_SDK_DEFINED_ERROR
読み込み後の SDK エラーが発生しました。
これは、読み込み後の初期化中に SDK でエラーが発生したことを示します。「
これの詳細は、LoadSdkException で返されたバンドルから、
SdkSandboxManager#loadSdk に渡される OutcomeReceiver。
定数値: 102 回 (0x00000066)。
LOAD_SDK_SDK_SANDBOX_DISABLED
public static final int LOAD_SDK_SDK_SANDBOX_DISABLED
SDK サンドボックスが無効になっています。
これは、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
SurfacePackage のリクエスト中は SDK が読み込まれません。
これは、SurfacePackage をリクエストしている SDK が、
サンドボックスが停止しているか、そもそも読み込まれなかったかのいずれかです。
定数値: 701 (0x000002bd)
SDK_サンドボックス_PROCESS_NOT_AVAILABLE
public static final int SDK_SANDBOX_PROCESS_NOT_AVAILABLE
SDK サンドボックス プロセスは利用できません。
これは、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
SDK サンドボックスが無効になっています。
SdkSandboxManager API は非公開です。これらの番号に発信しようとすると、UnsupportedOperationException が発生します。
定数値: 0 (0x00000000)
SDK_SANDBOX_STATE_ENABLED_PROCESS_ISOLATION
public static final int SDK_SANDBOX_STATE_ENABLED_PROCESS_ISOLATION
SDK サンドボックスが有効になっています。
アプリは SdkSandboxManager API を使用して、依存する SDKs を
該当する SDK サンドボックス プロセスに沿って対応してください。
定数値: 2 (0x00000002)
パブリック メソッド
addSdkSandboxProcessDeathCallback
public void addSdkSandboxProcessDeathCallback (Executor callbackExecutor, SdkSandboxManager.SdkSandboxProcessDeathCallback callback)
SDK サンドボックスなどの SDK サンドボックスのライフサイクル イベントに登録されるコールバックを追加します。 あります。呼び出されたときにサンドボックスがまだ作成されていない場合、リクエストは 保存されたデータは、サンドボックスが作成されるまで保存されます。作成された時点で、そのサンドボックスに対して有効になります。複数 終了を検出するコールバックを追加でき、サンドボックスが終了しても削除されません。
| パラメータ | |
|---|---|
callbackExecutor |
Executor: コールバックを呼び出す Executor。この値を null にすることはできません。コールバック イベントとリスナー イベントはこの Executor を通じてディスパッチされるため、使用するスレッドを簡単に制御できます。アプリのメインスレッドを通じてイベントをディスパッチするには、Context.getMainExecutor() を使用します。それ以外の場合は、適切なスレッドにディスパッチする Executor を提供します。 |
callback |
SdkSandboxManager.SdkSandboxProcessDeathCallback: SDK サンドボックスを受け取る SdkSandboxProcessDeathCallback
作成できます。
この値が null になることはありません。 |
addSyncedSharedPreferencesKeys
public void addSyncedSharedPreferencesKeys (Set<String> keys)
アプリのデフォルトの SharedPreferences から SDK に同期するキーのセットにキーを追加します
できます。
同期されたデータは、SDK が SdkSandboxController.getClientSharedPreferences() API を使用して読み取れるようになります。
この API を使用して追加されたキーの同期を停止するには、removeSyncedSharedPreferencesKeys(java.util.Set) を使用します。
アプリが再起動し、ユーザーがこの API を再度呼び出してプールを再構築する必要があると、同期が中断されます。 同期に使用する鍵のリストです。
注: このクラスは、複数のプロセスにわたる使用をサポートしていません。
| パラメータ | |
|---|---|
keys |
Set: サンドボックスに同期されるキーのセット。
この値が null になることはありません。 |
getAppOwnedSdkSandboxInterfaces
public List<AppOwnedSdkSandboxInterface> getAppOwnedSdkSandboxInterfaces ()
アプリに登録されている AppOwnedSdkSandboxInterface のリストを取得します。
| 戻り値 | |
|---|---|
List<AppOwnedSdkSandboxInterface> |
callInfo がマップに見つからない場合は空のリスト。それ以外の場合は AppOwnedSdkSandboxInterface のリスト。
この値が null になることはありません。 |
getSandboxedSdks
public List<SandboxedSdk> getSandboxedSdks ()
サンドボックスに読み込まれた SDK に関する情報を取得します。
| 戻り値 | |
|---|---|
List<SandboxedSdk> |
現在読み込まれているすべての SDK を含む SandboxedSdk のリスト。
この値が null になることはありません。 |
getSdkSandboxState
public static int getSdkSandboxState ()
SDK サンドボックス機能の現在の状態を返します。
| 戻り値 | |
|---|---|
int |
値は SDK_SANDBOX_STATE_DISABLED または SDK_SANDBOX_STATE_ENABLED_PROCESS_ISOLATION です。 |
getSyncedSharedPreferencesKeys
public Set<String> getSyncedSharedPreferencesKeys ()
アプリのデフォルトの SharedPreferences から同期する設定キーを返します。
実装します
| 戻り値 | |
|---|---|
Set<String> |
この値が null になることはありません。 |
loadSdk
public void loadSdk (String sdkName, Bundle params, Executor executor, OutcomeReceiver<SandboxedSdk, LoadSdkException> receiver)
SDK サンドボックスの Java プロセスで SDK を読み込みます。
sdkName を使用して SDK ライブラリを SDK サンドボックス プロセスに非同期で読み込みます。「
発信者には receiverを通じて通知されます。
呼び出し元は、依存する SDKs をマニフェストで <uses-sdk-library> タグを使用してすでに宣言する必要があります。呼び出し元は、依存する SDKs のみを SDK に読み込むことができます。
できます。
クライアント アプリケーションが最初の SDK を読み込むと、新しい SDK サンドボックス プロセスが実行されます 作成されます。クライアント アプリケーション用のサンドボックスがすでに作成されている場合は、追加の SDK 同じサンドボックスに読み込まれます
この API は、呼び出し元がフォアグラウンドで実行されているときにのみ呼び出すことができます。着信
バックグラウンド処理では、receiver で LoadSdkException が返されます。
| パラメータ | |
|---|---|
sdkName |
String: 読み込む SDK の名前。
この値が null になることはありません。 |
params |
Bundle: Bundle の形式で SDK に渡される追加のパラメータ
同意する必要があります
この値が null になることはありません。 |
executor |
Executor: レシーバを呼び出す Executor。
この値が null になることはありません。
コールバック イベントとリスナー イベントはこの Executor を通じてディスパッチされるため、使用するスレッドを簡単に制御できます。アプリのメインスレッドを通じてイベントをディスパッチするには、Context.getMainExecutor() を使用します。それ以外の場合は、適切なスレッドにディスパッチする Executor を提供します。 |
receiver |
OutcomeReceiver: 実行が成功すると SandboxedSdk を受け取ります。または、LoadSdkException を受け取ります。
この値が null になることはありません。 |
registerAppOwnedSdkSandboxInterface
public void registerAppOwnedSdkSandboxInterface (AppOwnedSdkSandboxInterface appOwnedSdkSandboxInterface)
アプリプロセスの AppOwnedSdkSandboxInterface を登録します。
以前と同じ名前で AppOwnedSdkSandboxInterface を登録する
登録済みのインターフェースは IllegalStateException になります。
AppOwnedSdkSandboxInterface#getName() はインターフェースの名前を指します。
| パラメータ | |
|---|---|
appOwnedSdkSandboxInterface |
AppOwnedSdkSandboxInterface: 登録する AppOwnedSdkSandboxInterface
この値が null になることはありません。 |
removeSdkSandboxProcessDeathCallback
public void removeSdkSandboxProcessDeathCallback (SdkSandboxManager.SdkSandboxProcessDeathCallback callback)
以前に addSdkSandboxProcessDeathCallback(java.util.concurrent.Executor, android.app.sdksandbox.SdkSandboxManager.SdkSandboxProcessDeathCallback) を使用して追加された SdkSandboxProcessDeathCallback を削除します。
| パラメータ | |
|---|---|
callback |
SdkSandboxManager.SdkSandboxProcessDeathCallback: 以前に次の方法を使用して追加された SdkSandboxProcessDeathCallback
SdkSandboxManager#addSdkSandboxProcessDeathCallback(Executor,
SdkSandboxProcessDeathCallback)
この値を null にすることはできません。 |
deleteSyncedSharedPreferencesKeys
public void removeSyncedSharedPreferencesKeys (Set<String> keys)
addSyncedSharedPreferencesKeys(java.util.Set) を使用して追加された鍵のセットから鍵を削除します
削除したキーがすでに同期されている場合、SDK サンドボックスから消去されます。
| パラメータ | |
|---|---|
keys |
Set: サンドボックスに同期する必要がなくなるキー名のセット。
この値が null になることはありません。 |
requestSurfacePackage
public void requestSurfacePackage (String sdkName, Bundle params, Executor callbackExecutor, OutcomeReceiver<Bundle, RequestSurfacePackageException> receiver)
サーフェス パッケージのリクエストを SDK に送信します。
クライアント アプリケーションが SDK の読み込みの成功に関するシグナルを受け取り、
ビュー階層に SurfaceView を追加した場合、非同期にリクエストできます。
SDK からビューをレンダリングする SurfacePackage
SurfacePackage の準備ができたら、次の OutcomeReceiver#onResult コールバックが
渡された receiver が呼び出されます。このコールバックには 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 は、呼び出し元がフォアグラウンドで実行されているときにのみ呼び出すことができます。着信
バックグラウンドでは、receiver で RequestSurfacePackageException が返されます。
| パラメータ | |
|---|---|
sdkName |
String: SDK サンドボックスに読み込まれた SDK の名前。
この値が null になることはありません。 |
params |
Bundle: クライアント アプリが SDK に渡すパラメータ。
この値が null になることはありません。 |
callbackExecutor |
Executor: コールバックを呼び出す Executor。この値を null にすることはできません。コールバック イベントとリスナー イベントはこの Executor を通じてディスパッチされるため、使用するスレッドを簡単に制御できます。アプリのメインスレッドを通じてイベントをディスパッチするには、Context.getMainExecutor() を使用します。それ以外の場合は、適切なスレッドにディスパッチする Executor を提供します。 |
receiver |
OutcomeReceiver: 成功すると、キーを含む Bundle を返します。
SdkSandboxManager#EXTRA_SURFACE_PACKAGE と SurfacePackage 値、または
失敗した場合は RequestSurfacePackageException。
この値が null になることはありません。 |
| 例外 | |
|---|---|
IllegalArgumentException |
params に必要なキーがすべて含まれていない場合。 |
startSdkSandboxActivity
public void startSdkSandboxActivity (Activity fromActivity, IBinder sdkActivityToken)
SDK サンドボックスで Activity を開始します。
この関数は、渡された fromActivity と同じタスクで新しい Activity を開始し、渡された sdkActivityToken を共有する SDK に渡します。
その SDK から、この Activity を取得するリクエストを識別します。
次の場合、Activity は開始されません。
- この API を呼び出しているアプリがバックグラウンドで動作している。
- 渡された
sdkActivityTokenがActivityのリクエストにマッピングされていない 呼び出し元のアプリと共有した SDK を作成します。 - 渡された
sdkActivityTokenを共有した SDK が、これに対するリクエストを削除しましたActivity。 - サンドボックス
Activityはすでに作成されています。
| パラメータ | |
|---|---|
fromActivity |
Activity: Activity を使用して Activity#startActivity(Intent) を呼び出すことで、新しいサンドボックス Activity を開始します。
この値が null になることはありません。 |
sdkActivityToken |
IBinder: Activity をリクエストする SDK によって共有される識別子。
この値が 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 になることはありません。 |
unregisterAppOwnedSdkSandboxInterface
public void unregisterAppOwnedSdkSandboxInterface (String name)
アプリプロセスの ERROR(/AppOwnedSdkSandboxInterfaces) の登録を解除します。
| パラメータ | |
|---|---|
name |
String: AppOwnedSdkSandboxInterface が登録された名前。
この値が null になることはありません。 |