SdkSandboxManager

public final class SdkSandboxManager
extends Object

java.lang.Object
   ↳ android.app.sdksandbox.SdkSandboxManager


SDK 샌드박스 프로세스에 SDKs를 로드한 다음 이와 상호작용하는 API를 제공합니다.

SdkSandbox는 별도의 UID 범위에서 실행되는 자바 프로세스입니다. 각 앱에는 자체 SDK 샌드박스 프로세스가 있습니다.

첫 번째 앱은 <uses-sdk-library> 태그를 사용하여 AndroidManifest.xml에서 종속되는 SDKs를 선언해야 합니다. 앱은 종속되는 SDKsSdkSandbox에 로드할 수 있습니다.

참고: 이 클래스에 정의된 모든 API는 불안정하며 변경될 수 있습니다.

요약

중첩된 클래스

interface SdkSandboxManager.LoadSdkCallback

SDK 로드 및 SDK와의 상호작용 관련 이벤트를 추적하는 콜백입니다. 

interface SdkSandboxManager.RequestSurfacePackageCallback

SDK에서 노출 영역 패키지 요청을 추적하는 콜백입니다. 

interface SdkSandboxManager.SendDataCallback

SDK로의 데이터 전송을 추적하는 콜백입니다. 

상수

int LOAD_SDK_ALREADY_LOADED

SDK가 이미 로드되었습니다.

int LOAD_SDK_INTERNAL_ERROR

SDK를 로드하는 동안 내부 오류가 발생했습니다.

int LOAD_SDK_NOT_FOUND

SDK를 찾을 수 없습니다.

int REQUEST_SURFACE_PACKAGE_INTERNAL_ERROR

SurfacePackage 요청 중에 내부 오류가 발생했습니다.

String SDK_SANDBOX_SERVICE

Context#getSystemService(String)와 함께 사용하여 이 클라이언트 애플리케이션에 속한 SDK와 상호작용하는 SdkSandboxManager를 가져옵니다.

int SDK_SANDBOX_STATE_DISABLED

SDK 샌드박스가 사용 중지되었습니다.

int SDK_SANDBOX_STATE_ENABLED_PROCESS_ISOLATION

SDK 샌드박스가 사용 설정되었습니다.

int SEND_DATA_INTERNAL_ERROR

SdkSandboxManager#sendData(String, Bundle, Executor, SendDataCallback)을 실행하는 중에 내부 오류가 발생했습니다.

공개 메서드

static int getSdkSandboxState()

SdkSandbox의 현재 상태를 반환합니다.

void loadSdk(String sdkName, Bundle params, Executor callbackExecutor, SdkSandboxManager.LoadSdkCallback callback)

SDK 샌드박스 자바 프로세스에서 SDK를 로드합니다.

void requestSurfacePackage(String sdkName, int displayId, int width, int height, Bundle params, Executor callbackExecutor, SdkSandboxManager.RequestSurfacePackageCallback callback)

노출 영역 패키지 요청을 SDK로 전송합니다.

void sendData(String sdkName, Bundle data, Executor callbackExecutor, SdkSandboxManager.SendDataCallback callback)

data 번들을 SDK로 전송합니다.

상속된 메서드

상수

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.app.sdksandbox.SdkSandboxManager.LoadSdkCallback)을 호출하여 동일한 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.app.sdksandbox.SdkSandboxManager.LoadSdkCallback)을 호출하여 존재하지 않는 SDK를 로드하려고 했음을 나타냅니다.

상수 값: 100 (0x00000064)

REQUEST_SURFACE_PACKAGE_INTERNAL_ERROR

public static final int REQUEST_SURFACE_PACKAGE_INTERNAL_ERROR

SurfacePackage 요청 중에 내부 오류가 발생했습니다.

SurfacePackage를 요청하는 동안 일반적인 내부 오류가 발생했음을 나타냅니다.

상수 값: 700 (0x000002bc)

SDK_SANDBOX_SERVICE

public static final String SDK_SANDBOX_SERVICE

Context#getSystemService(String)와 함께 사용하여 이 클라이언트 애플리케이션에 속한 SDK와 상호작용하는 SdkSandboxManager를 가져옵니다.

상수 값: "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를 상응하는 SdkSandbox 프로세스에 로드할 수 있습니다.

상수 값: 2 (0x00000002)

SEND_DATA_INTERNAL_ERROR

public static final int SEND_DATA_INTERNAL_ERROR

SdkSandboxManager#sendData(String, Bundle, Executor, SendDataCallback)을 실행하는 중에 내부 오류가 발생했습니다.

데이터를 SDK로 전송하도록 요청하는 동안 일반적인 내부 오류가 발생했음을 나타냅니다.

상수 값: 800 (0x00000320)

공개 메서드

getSdkSandboxState

public static int getSdkSandboxState ()

SdkSandbox의 현재 상태를 반환합니다.

반환 값
int 값은 SDK_SANDBOX_STATE_DISABLED 또는 SDK_SANDBOX_STATE_ENABLED_PROCESS_ISOLATION입니다.

loadSdk

public void loadSdk (String sdkName,
                Bundle params,
                Executor callbackExecutor,
                SdkSandboxManager.LoadSdkCallback callback)

SDK 샌드박스 자바 프로세스에서 SDK를 로드합니다.

sdkName으로 SDK 라이브러리를 샌드박스 프로세스에 비동기식으로 로드합니다. 호출자에 LoadSdkCallback callback을 통해 알려야 합니다.

앱은 <use-sdk-library> 태그를 사용하여 AndroidManifest에서 종속되는 SDKs를 미리 선언해야 합니다. 앱은 종속되는 SDKsSdkSandbox에 로드할 수 있습니다.

클라이언트 애플리케이션이 첫 번째 SDK를 로드하면 새 SdkSandbox 프로세스가 만들어집니다. 다른 SDK는 클라이언트 애플리케이션용으로 이미 만들어진 동일한 샌드박스에 로드됩니다.

매개변수
sdkName String: 로드할 SDK의 이름입니다. 이 값은 null일 수 없습니다.

params Bundle: 앱이 SDK에 전달하는 매개변수입니다. 이 값은 null일 수 없습니다.

callbackExecutor Executor: 콜백을 호출할 Executor입니다. 이 값은 null일 수 없습니다.
callback SdkSandboxManager.LoadSdkCallback: SDK를 로드하여 이벤트를 수신하는 LoadSdkCallback입니다. 이 값은 null일 수 없습니다.

requestSurfacePackage

public void requestSurfacePackage (String sdkName,
                int displayId,
                int width,
                int height,
                Bundle params,
                Executor callbackExecutor,
                SdkSandboxManager.RequestSurfacePackageCallback callback)

노출 영역 패키지 요청을 SDK로 전송합니다.

클라이언트 애플리케이션이 SdkSandboxManager.LoadSdkCallback.onLoadSdkSuccess(android.os.Bundle)을 통해 성공적인 SDK 로드에 관한 신호를 수신하면 SDK에서 뷰를 렌더링하도록 SurfacePackage를 비동기식으로 요청할 수 있습니다.

요청된 SurfacePackageSdkSandboxManager.RequestSurfacePackageCallback.onSurfacePackageReady(android.view.SurfaceControlViewHost.SurfacePackage, int, android.os.Bundle)을 통해 클라이언트 애플리케이션에 반환됩니다.

매개변수
sdkName String: SDK 샌드박스에 로드된 SDK의 이름입니다. 이 값은 null일 수 없습니다.

displayId int: 노출 영역 패키지를 표시할 논리 디스플레이의 ID입니다.

width int: 노출 영역 패키지의 너비입니다.

height int: 노출 영역 패키지의 높이입니다.

params Bundle: 클라이언트 애플리케이션이 SDK에 전달하는 매개변수입니다. 이 값은 null일 수 없습니다.

callbackExecutor Executor: 콜백을 호출할 Executor입니다. 이 값은 null일 수 없습니다.
callback SdkSandboxManager.RequestSurfacePackageCallback: SDK에서 노출 영역 패키지를 요청한 결과를 수신하는 RequestSurfacePackageCallback입니다. 이 값은 null일 수 없습니다.

sendData

public void sendData (String sdkName,
                Bundle data,
                Executor callbackExecutor,
                SdkSandboxManager.SendDataCallback callback)

data 번들을 SDK로 전송합니다.

클라이언트 애플리케이션이 SdkSandboxManager.LoadSdkCallback.onLoadSdkSuccess(android.os.Bundle)을 통해 SDK 로드 성공을 알리는 신호를 수신하면 샌드박스의 SDK에 데이터를 전송하도록 비동기식으로 요청할 수 있습니다. SDK가 로드되지 않으면 SecurityException이 발생합니다.

매개변수
sdkName String: SDK 샌드박스에 로드된 SDK의 이름으로, loadSdk(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.app.sdksandbox.SdkSandboxManager.LoadSdkCallback)에서 사용하는 것과 같은 이름입니다. 이 값은 null일 수 없습니다.

data Bundle: Bundle 형식으로 표시되는 데이터로, 이 데이터는 SDK로 전송됩니다. 이 값은 null일 수 없습니다.

callbackExecutor Executor: 콜백을 호출할 Executor입니다. 이 값은 null일 수 없습니다.
callback SdkSandboxManager.SendDataCallback: SDK 로드 및 SDK와의 상호작용에서 발생하는 이벤트를 수신하는 SendDataCallback입니다. SDK는 SendDataCallback#onSendDataSuccess(Bundle)을 통해 데이터를 다시 전송할 수도 있습니다. 이 값은 null일 수 없습니다.