xref: /aosp_15_r20/prebuilts/sdk/34/system/api/framework-virtualization.txt (revision 344a7f5ef16c479e7a7f54ee6567a9d112f9e72b)
1*344a7f5eSAndroid Build Coastguard Worker// Signature format: 2.0
2*344a7f5eSAndroid Build Coastguard Workerpackage android.system.virtualmachine {
3*344a7f5eSAndroid Build Coastguard Worker
4*344a7f5eSAndroid Build Coastguard Worker  public class VirtualMachine implements java.lang.AutoCloseable {
5*344a7f5eSAndroid Build Coastguard Worker    method public void clearCallback();
6*344a7f5eSAndroid Build Coastguard Worker    method @WorkerThread public void close();
7*344a7f5eSAndroid Build Coastguard Worker    method @NonNull @WorkerThread public android.os.IBinder connectToVsockServer(@IntRange(from=android.system.virtualmachine.VirtualMachine.MIN_VSOCK_PORT, to=android.system.virtualmachine.VirtualMachine.MAX_VSOCK_PORT) long) throws android.system.virtualmachine.VirtualMachineException;
8*344a7f5eSAndroid Build Coastguard Worker    method @NonNull @WorkerThread public android.os.ParcelFileDescriptor connectVsock(@IntRange(from=android.system.virtualmachine.VirtualMachine.MIN_VSOCK_PORT, to=android.system.virtualmachine.VirtualMachine.MAX_VSOCK_PORT) long) throws android.system.virtualmachine.VirtualMachineException;
9*344a7f5eSAndroid Build Coastguard Worker    method @NonNull @WorkerThread public android.system.virtualmachine.VirtualMachineConfig getConfig();
10*344a7f5eSAndroid Build Coastguard Worker    method @NonNull @WorkerThread public java.io.InputStream getConsoleOutput() throws android.system.virtualmachine.VirtualMachineException;
11*344a7f5eSAndroid Build Coastguard Worker    method @NonNull @WorkerThread public java.io.InputStream getLogOutput() throws android.system.virtualmachine.VirtualMachineException;
12*344a7f5eSAndroid Build Coastguard Worker    method @NonNull public String getName();
13*344a7f5eSAndroid Build Coastguard Worker    method @WorkerThread public int getStatus();
14*344a7f5eSAndroid Build Coastguard Worker    method @RequiresPermission(android.system.virtualmachine.VirtualMachine.MANAGE_VIRTUAL_MACHINE_PERMISSION) @WorkerThread public void run() throws android.system.virtualmachine.VirtualMachineException;
15*344a7f5eSAndroid Build Coastguard Worker    method public void setCallback(@NonNull java.util.concurrent.Executor, @NonNull android.system.virtualmachine.VirtualMachineCallback);
16*344a7f5eSAndroid Build Coastguard Worker    method @NonNull @WorkerThread public android.system.virtualmachine.VirtualMachineConfig setConfig(@NonNull android.system.virtualmachine.VirtualMachineConfig) throws android.system.virtualmachine.VirtualMachineException;
17*344a7f5eSAndroid Build Coastguard Worker    method @WorkerThread public void stop() throws android.system.virtualmachine.VirtualMachineException;
18*344a7f5eSAndroid Build Coastguard Worker    method @NonNull @WorkerThread public android.system.virtualmachine.VirtualMachineDescriptor toDescriptor() throws android.system.virtualmachine.VirtualMachineException;
19*344a7f5eSAndroid Build Coastguard Worker    field public static final String MANAGE_VIRTUAL_MACHINE_PERMISSION = "android.permission.MANAGE_VIRTUAL_MACHINE";
20*344a7f5eSAndroid Build Coastguard Worker    field public static final long MAX_VSOCK_PORT = 4294967295L; // 0xffffffffL
21*344a7f5eSAndroid Build Coastguard Worker    field public static final long MIN_VSOCK_PORT = 1024L; // 0x400L
22*344a7f5eSAndroid Build Coastguard Worker    field public static final int STATUS_DELETED = 2; // 0x2
23*344a7f5eSAndroid Build Coastguard Worker    field public static final int STATUS_RUNNING = 1; // 0x1
24*344a7f5eSAndroid Build Coastguard Worker    field public static final int STATUS_STOPPED = 0; // 0x0
25*344a7f5eSAndroid Build Coastguard Worker    field public static final String USE_CUSTOM_VIRTUAL_MACHINE_PERMISSION = "android.permission.USE_CUSTOM_VIRTUAL_MACHINE";
26*344a7f5eSAndroid Build Coastguard Worker  }
27*344a7f5eSAndroid Build Coastguard Worker
28*344a7f5eSAndroid Build Coastguard Worker  public interface VirtualMachineCallback {
29*344a7f5eSAndroid Build Coastguard Worker    method public void onError(@NonNull android.system.virtualmachine.VirtualMachine, int, @NonNull String);
30*344a7f5eSAndroid Build Coastguard Worker    method public void onPayloadFinished(@NonNull android.system.virtualmachine.VirtualMachine, int);
31*344a7f5eSAndroid Build Coastguard Worker    method public void onPayloadReady(@NonNull android.system.virtualmachine.VirtualMachine);
32*344a7f5eSAndroid Build Coastguard Worker    method public void onPayloadStarted(@NonNull android.system.virtualmachine.VirtualMachine);
33*344a7f5eSAndroid Build Coastguard Worker    method public void onStopped(@NonNull android.system.virtualmachine.VirtualMachine, int);
34*344a7f5eSAndroid Build Coastguard Worker    field public static final int ERROR_PAYLOAD_CHANGED = 2; // 0x2
35*344a7f5eSAndroid Build Coastguard Worker    field public static final int ERROR_PAYLOAD_INVALID_CONFIG = 3; // 0x3
36*344a7f5eSAndroid Build Coastguard Worker    field public static final int ERROR_PAYLOAD_VERIFICATION_FAILED = 1; // 0x1
37*344a7f5eSAndroid Build Coastguard Worker    field public static final int ERROR_UNKNOWN = 0; // 0x0
38*344a7f5eSAndroid Build Coastguard Worker    field public static final int STOP_REASON_BOOTLOADER_INSTANCE_IMAGE_CHANGED = 10; // 0xa
39*344a7f5eSAndroid Build Coastguard Worker    field public static final int STOP_REASON_BOOTLOADER_PUBLIC_KEY_MISMATCH = 9; // 0x9
40*344a7f5eSAndroid Build Coastguard Worker    field public static final int STOP_REASON_CRASH = 6; // 0x6
41*344a7f5eSAndroid Build Coastguard Worker    field public static final int STOP_REASON_HANGUP = 16; // 0x10
42*344a7f5eSAndroid Build Coastguard Worker    field public static final int STOP_REASON_INFRASTRUCTURE_ERROR = 0; // 0x0
43*344a7f5eSAndroid Build Coastguard Worker    field public static final int STOP_REASON_KILLED = 1; // 0x1
44*344a7f5eSAndroid Build Coastguard Worker    field public static final int STOP_REASON_MICRODROID_FAILED_TO_CONNECT_TO_VIRTUALIZATION_SERVICE = 11; // 0xb
45*344a7f5eSAndroid Build Coastguard Worker    field public static final int STOP_REASON_MICRODROID_INVALID_PAYLOAD_CONFIG = 14; // 0xe
46*344a7f5eSAndroid Build Coastguard Worker    field public static final int STOP_REASON_MICRODROID_PAYLOAD_HAS_CHANGED = 12; // 0xc
47*344a7f5eSAndroid Build Coastguard Worker    field public static final int STOP_REASON_MICRODROID_PAYLOAD_VERIFICATION_FAILED = 13; // 0xd
48*344a7f5eSAndroid Build Coastguard Worker    field public static final int STOP_REASON_MICRODROID_UNKNOWN_RUNTIME_ERROR = 15; // 0xf
49*344a7f5eSAndroid Build Coastguard Worker    field public static final int STOP_REASON_PVM_FIRMWARE_INSTANCE_IMAGE_CHANGED = 8; // 0x8
50*344a7f5eSAndroid Build Coastguard Worker    field public static final int STOP_REASON_PVM_FIRMWARE_PUBLIC_KEY_MISMATCH = 7; // 0x7
51*344a7f5eSAndroid Build Coastguard Worker    field public static final int STOP_REASON_REBOOT = 5; // 0x5
52*344a7f5eSAndroid Build Coastguard Worker    field public static final int STOP_REASON_SHUTDOWN = 3; // 0x3
53*344a7f5eSAndroid Build Coastguard Worker    field public static final int STOP_REASON_START_FAILED = 4; // 0x4
54*344a7f5eSAndroid Build Coastguard Worker    field public static final int STOP_REASON_UNKNOWN = 2; // 0x2
55*344a7f5eSAndroid Build Coastguard Worker    field public static final int STOP_REASON_VIRTUALIZATION_SERVICE_DIED = -1; // 0xffffffff
56*344a7f5eSAndroid Build Coastguard Worker  }
57*344a7f5eSAndroid Build Coastguard Worker
58*344a7f5eSAndroid Build Coastguard Worker  public final class VirtualMachineConfig {
59*344a7f5eSAndroid Build Coastguard Worker    method @Nullable public String getApkPath();
60*344a7f5eSAndroid Build Coastguard Worker    method public int getCpuTopology();
61*344a7f5eSAndroid Build Coastguard Worker    method public int getDebugLevel();
62*344a7f5eSAndroid Build Coastguard Worker    method @IntRange(from=0) public long getEncryptedStorageBytes();
63*344a7f5eSAndroid Build Coastguard Worker    method @IntRange(from=0) public long getMemoryBytes();
64*344a7f5eSAndroid Build Coastguard Worker    method @Nullable public String getPayloadBinaryName();
65*344a7f5eSAndroid Build Coastguard Worker    method public boolean isCompatibleWith(@NonNull android.system.virtualmachine.VirtualMachineConfig);
66*344a7f5eSAndroid Build Coastguard Worker    method public boolean isEncryptedStorageEnabled();
67*344a7f5eSAndroid Build Coastguard Worker    method public boolean isProtectedVm();
68*344a7f5eSAndroid Build Coastguard Worker    method public boolean isVmOutputCaptured();
69*344a7f5eSAndroid Build Coastguard Worker    field public static final int CPU_TOPOLOGY_MATCH_HOST = 1; // 0x1
70*344a7f5eSAndroid Build Coastguard Worker    field public static final int CPU_TOPOLOGY_ONE_CPU = 0; // 0x0
71*344a7f5eSAndroid Build Coastguard Worker    field public static final int DEBUG_LEVEL_FULL = 1; // 0x1
72*344a7f5eSAndroid Build Coastguard Worker    field public static final int DEBUG_LEVEL_NONE = 0; // 0x0
73*344a7f5eSAndroid Build Coastguard Worker  }
74*344a7f5eSAndroid Build Coastguard Worker
75*344a7f5eSAndroid Build Coastguard Worker  public static final class VirtualMachineConfig.Builder {
76*344a7f5eSAndroid Build Coastguard Worker    ctor public VirtualMachineConfig.Builder(@NonNull android.content.Context);
77*344a7f5eSAndroid Build Coastguard Worker    method @NonNull public android.system.virtualmachine.VirtualMachineConfig build();
78*344a7f5eSAndroid Build Coastguard Worker    method @NonNull public android.system.virtualmachine.VirtualMachineConfig.Builder setApkPath(@NonNull String);
79*344a7f5eSAndroid Build Coastguard Worker    method @NonNull public android.system.virtualmachine.VirtualMachineConfig.Builder setCpuTopology(int);
80*344a7f5eSAndroid Build Coastguard Worker    method @NonNull public android.system.virtualmachine.VirtualMachineConfig.Builder setDebugLevel(int);
81*344a7f5eSAndroid Build Coastguard Worker    method @NonNull public android.system.virtualmachine.VirtualMachineConfig.Builder setEncryptedStorageBytes(@IntRange(from=1) long);
82*344a7f5eSAndroid Build Coastguard Worker    method @NonNull public android.system.virtualmachine.VirtualMachineConfig.Builder setMemoryBytes(@IntRange(from=1) long);
83*344a7f5eSAndroid Build Coastguard Worker    method @NonNull public android.system.virtualmachine.VirtualMachineConfig.Builder setPayloadBinaryName(@NonNull String);
84*344a7f5eSAndroid Build Coastguard Worker    method @NonNull public android.system.virtualmachine.VirtualMachineConfig.Builder setProtectedVm(boolean);
85*344a7f5eSAndroid Build Coastguard Worker    method @NonNull public android.system.virtualmachine.VirtualMachineConfig.Builder setVmOutputCaptured(boolean);
86*344a7f5eSAndroid Build Coastguard Worker  }
87*344a7f5eSAndroid Build Coastguard Worker
88*344a7f5eSAndroid Build Coastguard Worker  public final class VirtualMachineDescriptor implements java.lang.AutoCloseable android.os.Parcelable {
89*344a7f5eSAndroid Build Coastguard Worker    method public void close();
90*344a7f5eSAndroid Build Coastguard Worker    method public int describeContents();
91*344a7f5eSAndroid Build Coastguard Worker    method public void writeToParcel(@NonNull android.os.Parcel, int);
92*344a7f5eSAndroid Build Coastguard Worker    field @NonNull public static final android.os.Parcelable.Creator<android.system.virtualmachine.VirtualMachineDescriptor> CREATOR;
93*344a7f5eSAndroid Build Coastguard Worker  }
94*344a7f5eSAndroid Build Coastguard Worker
95*344a7f5eSAndroid Build Coastguard Worker  public class VirtualMachineException extends java.lang.Exception {
96*344a7f5eSAndroid Build Coastguard Worker  }
97*344a7f5eSAndroid Build Coastguard Worker
98*344a7f5eSAndroid Build Coastguard Worker  public class VirtualMachineManager {
99*344a7f5eSAndroid Build Coastguard Worker    method @NonNull @RequiresPermission(android.system.virtualmachine.VirtualMachine.MANAGE_VIRTUAL_MACHINE_PERMISSION) @WorkerThread public android.system.virtualmachine.VirtualMachine create(@NonNull String, @NonNull android.system.virtualmachine.VirtualMachineConfig) throws android.system.virtualmachine.VirtualMachineException;
100*344a7f5eSAndroid Build Coastguard Worker    method @WorkerThread public void delete(@NonNull String) throws android.system.virtualmachine.VirtualMachineException;
101*344a7f5eSAndroid Build Coastguard Worker    method @Nullable @WorkerThread public android.system.virtualmachine.VirtualMachine get(@NonNull String) throws android.system.virtualmachine.VirtualMachineException;
102*344a7f5eSAndroid Build Coastguard Worker    method public int getCapabilities();
103*344a7f5eSAndroid Build Coastguard Worker    method @NonNull @WorkerThread public android.system.virtualmachine.VirtualMachine getOrCreate(@NonNull String, @NonNull android.system.virtualmachine.VirtualMachineConfig) throws android.system.virtualmachine.VirtualMachineException;
104*344a7f5eSAndroid Build Coastguard Worker    method @NonNull @WorkerThread public android.system.virtualmachine.VirtualMachine importFromDescriptor(@NonNull String, @NonNull android.system.virtualmachine.VirtualMachineDescriptor) throws android.system.virtualmachine.VirtualMachineException;
105*344a7f5eSAndroid Build Coastguard Worker    field public static final int CAPABILITY_NON_PROTECTED_VM = 2; // 0x2
106*344a7f5eSAndroid Build Coastguard Worker    field public static final int CAPABILITY_PROTECTED_VM = 1; // 0x1
107*344a7f5eSAndroid Build Coastguard Worker  }
108*344a7f5eSAndroid Build Coastguard Worker
109*344a7f5eSAndroid Build Coastguard Worker}
110*344a7f5eSAndroid Build Coastguard Worker
111