SdkSandboxManager
public
final
class
SdkSandboxManager
extends Object
java.lang.Object | |
↳ | android.app.sdksandbox.SdkSandboxManager |
SDKs
를
SDK 샌드박스 프로세스를 빌드한 다음 이와 상호작용할 수 있습니다.
SDK 샌드박스는 별도의 UID 범위에서 실행되는 자바 프로세스입니다. 앱마다 자체 SDK가 있을 수 있음 실행할 수 있습니다.
앱은 먼저 <uses-sdk-library>
태그를 사용하여 매니페스트에서 종속되는 SDK를 선언해야 합니다. 앱은 종속되는 SDK만 SDK 샌드박스에 로드할 수 있습니다.
요약
중첩된 클래스 | |
---|---|
interface |
SdkSandboxManager.SdkSandboxProcessDeathCallback
SDK 샌드박스 종료 이벤트 추적을 위한 콜백입니다. |
상속된 메서드 | |
---|---|
상수
EXTRA_DISPLAY_ID[추가_표시_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)
의 번들 필드에서 사용할 키의 이름입니다. 값은 SurfacePackage
의 정수 높이를 픽셀 단위로 정의해야 합니다.
상수 값: 'android.app.sdksandbox.extra.HEIGHT_IN_PIXELS'
추가_호스트_토큰
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
함수에 전달되는 번들의 키 이름입니다. 값은 요청된 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)
의 번들 필드에서 사용할 키의 이름입니다. 값은 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를 새로고침하려고 시도했음을 나타냅니다.
성공적으로 로드되었습니다.
상수 값: 기초 (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_SANDBOX_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로 동기화되는 키 집합에 키를 추가합니다.
있습니다.
SdkSandboxController.getClientSharedPreferences()
API를 사용하여 SDK에서 동기화된 데이터를 읽을 수 있습니다.
이 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 샌드박스 자바 프로세스에서 SDK를 로드합니다.
sdkName
를 사용하여 SDK 라이브러리를 SDK 샌드박스 프로세스에 비동기식으로 로드합니다. 이
receiver
를 통해 알림이 전송됩니다.
호출자는 <uses-sdk-library>
태그를 사용하여 매니페스트에서 종속되는 SDKs
를 이미 선언해야 합니다. 호출자는 종속되는 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 입니다.
<ph type="x-smartling-placeholder">SdkSandboxManager#addSdkSandboxProcessDeathCallback(Executor,
SdkSandboxProcessDeathCallback) </ph>
이 값은 null 일 수 없습니다. |
removeSyncedSharedPreferencesKeys
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
를 추가하면 비동기식으로 요청이
SurfacePackage
를 사용하여 SDK에서 뷰를 렌더링합니다.
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 를 반환하며 여기에는 키가 포함됩니다.
SurfacePackage 값이 있는 SdkSandboxManager#EXTRA_SURFACE_PACKAGE 또는
실패 시 RequestSurfacePackageException 입니다.
이 값은 null 일 수 없습니다. |
생성 값 | |
---|---|
IllegalArgumentException |
params 에 모든 필수 키가 포함되어 있지 않은 경우 |
startSdkSandboxActivity
public void startSdkSandboxActivity (Activity fromActivity, IBinder sdkActivityToken)
SDK 샌드박스에서 Activity
를 시작합니다.
이 함수는 전달된 fromActivity
의 동일한 작업에서 새 Activity
를 시작하여 전달된 sdkActivityToken
를 공유하는 SDK에 전달합니다.
이 Activity
를 통계하기 위한 SDK의 요청을 식별합니다.
다음과 같은 경우 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 일 수 없습니다. |