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