Protocol Documentation

Table of Contents

instance.proto

Top

ArchitectureConfig

架构配置。请只使用其中一个字段,需要和 Shape 架构一致。

FieldTypeLabelDescription
android_container arch.android_container.ArchitectureConfig

Android 容器架构计算资源的配置。

ArchitectureConfigInput

架构配置。请只使用其中一个字段,需要和 Shape 架构一致。

FieldTypeLabelDescription
android_container arch.android_container.ArchitectureConfig

Android 容器架构计算资源的配置。

struct google.protobuf.Struct

DescribeInstancesRequest

DescribeInstancesRequest 是查询实例的请求。

FieldTypeLabelDescription
instance_ids string repeated

需要查询的实例 ID。 如果你提供了实例 ID,则只包含指定的实例。否则,包含所有实例。

filters InstanceFilter repeated

额外过滤条件。

max_results uint64 optional

最大返回结果数量。

next_token string optional

下一页令牌。 如果你提供了下一页令牌,则返回从该令牌指定的位置开始的结果。

DescribeInstancesResponse

DescribeInstancesResponse 是查询实例的响应。

FieldTypeLabelDescription
instances Instance repeated

实例列表。

next_token string optional

下一页令牌。 如果还有更多结果,将返回下一页令牌。 如果你要查询更多结果,请在下一次查询中保持查询条件一致,并传入下一页令牌。

GetInstancePowerStateRequest

GetInstancePowerStateRequest 是获取实例电源状态的请求。

FieldTypeLabelDescription
instance_id string

实例 ID。

GetInstancePowerStateResponse

GetInstancePowerStateResponse 是获取实例电源状态的响应。

FieldTypeLabelDescription
power_state InstancePowerState

实例电源状态。

Instance

实例信息。

FieldTypeLabelDescription
instance_id string

实例 ID。

shape_name string

Shape 名称。

instance_name string

实例名称。

client_token string

创建时传入的客户端令牌。

state InstanceState

实例状态。

architecture Architecture

架构。

architecture_config ArchitectureConfig

架构配置。

datacenter string

数据中心代码。

port_mapping_rules PortMappingRule repeated

端口映射信息。

host_id string optional

宿主 ID。

InstanceFilter

过滤条件。

FieldTypeLabelDescription
shape_name string

Shape 名称。

instance_name string

实例名称。

client_token string

客户端令牌。

state InstanceState

实例状态。

datacenter string

数据中心代码。

InstanceStateChange

实例状态变化。

FieldTypeLabelDescription
instance_id string

实例 ID。

current_state InstanceState

当前状态。

previous_state InstanceState

之前的状态。

NetworkAddressAttribute

网络地址属性。

只可能包含一个字段。

FieldTypeLabelDescription
public PublicNetworkAddressAttribute

private PrivateNetworkAddressAttribute

PortMappingMappedAddress

FieldTypeLabelDescription
address string

映射后的地址。

port uint32

映射后的端口。

name string

线路名称。 通常情况下,你应该使用 attribute 属性来判断。这个字段仅在同种线路有多个地址时,用于区分不同的线路。

attribute NetworkAddressAttribute

网络地址属性。

PortMappingRule

端口映射规则信息。

FieldTypeLabelDescription
id string

规则 ID。

protocol PortMappingProtocol

协议。

container_port uint32

容器端口。

mapped_addresses PortMappingMappedAddress repeated

映射后的地址信息。

PrivateNetworkAddressAttribute

私有网络地址属性。

暂无属性

PublicNetworkAddressAttribute

公网地址属性。

FieldTypeLabelDescription
preferred_providers InternetServiceProvider repeated

适合的运营商。

RestartInstanceRequest

RestartInstanceRequest 是重启实例的请求。

使用默认参数重启实例。如果需要对重启参数进行更多的控制,请使用具体架构的 InstanceService 中的方法。

FieldTypeLabelDescription
client_task_token string optional

instance_id string

RestartInstanceResponse

RestartInstanceResponse 是重启实例的响应。

RunInstancesRequest

RunInstancesRequest 是创建实例的请求。

FieldTypeLabelDescription
shape_name string

Shape 名称。 Shape 是实例的形状,包括架构、计算资源限制等规格信息。

instance_count uint32

本次请求需要创建实例的数量。 默认值为 1。如果你传入的值是 0,也将被视为 1。

instance_name string optional

实例名称。 实例名称是可选的。如果你提供了实例名词,则在活跃的实例中,实例名称不可重复。

client_token string optional

你提供的唯一、区分大小写的标识符,以确保请求的幂等性。 如果你没有指定客户端令牌,服务将使用随机生成的令牌以确保幂等性。

architecture Architecture

架构。需要和 Shape 的架构一致。

architecture_config ArchitectureConfigInput

架构配置。需要和 Shape 的架构一致。

datacenter string optional

数据中心代码。 当直连数据中心时,此参数可选。若传入,则必须和当前数据中心一致。 当通过跨数据中心网关访问时,必须传入该参数。

RunInstancesResponse

RunInstancesResponse 是创建实例的响应。

FieldTypeLabelDescription
instance_ids string repeated

创建的实例的实例 ID。

StartInstanceRequest

StartInstanceRequest 是启动实例的请求。

使用默认参数启动实例。如果需要对启动参数进行更多的控制,请使用具体架构的 InstanceService 中的方法。

FieldTypeLabelDescription
client_task_token string optional

instance_id string

StartInstanceResponse

StartInstanceResponse 是启动实例的响应。

StopInstanceRequest

StopInstanceRequest 是停止实例的请求。

使用默认参数停止实例。如果需要对停止参数进行更多的控制,请使用具体架构的 InstanceService 中的方法。

FieldTypeLabelDescription
client_task_token string optional

instance_id string

StopInstanceResponse

StopInstanceResponse 是停止实例的响应。

TerminateInstancesRequest

TerminateInstancesRequest 是终止实例的请求。

FieldTypeLabelDescription
instance_ids string repeated

需要终止的实例 ID。

TerminateInstancesResponse

TerminateInstancesResponse 是终止实例的响应。

FieldTypeLabelDescription
instances InstanceStateChange repeated

实例状态变化信息列表。

Architecture

架构。

NameNumberDescription
ARCH_UNKNOWN 0

未知架构。

ARCH_ANDROID_CONTAINER 1

Android 容器。

InstancePowerState

实例电源状态

NameNumberDescription
INSTANCE_POWER_STATE_UNKNOWN 0

未知状态。

INSTANCE_POWER_STATE_ON 1

实例已开机。

INSTANCE_POWER_STATE_OFF 2

实例已关机。

INSTANCE_POWER_STATE_CHANGING 3

实例电源状态正在发生变化。

InstanceState

实例状态。

请注意,这些状态和计算资源实际是否“开机“或”关机“无关。实例处于 RUNNING 状态,仅表示实例已经调度成功并可以使用。

如果需要“开机”“关机”状态,请参考 GetInstancePowerState 方法和 InstancePowerState 枚举。

NameNumberDescription
INSTANCE_STATE_UNKNOWN 0

未知状态。

INSTANCE_STATE_PENDING 1

创建中

INSTANCE_STATE_RUNNING 2

可运行的

INSTANCE_STATE_TERMINATED 3

主动停止运行的

INSTANCE_STATE_FAILED 4

被迫停止运行的

InternetServiceProvider

运营商。

NameNumberDescription
ISP_UNKNOWN 0

未知运营商。

ISP_CHINA_TELECOM 1

电信。

ISP_CHINA_UNICOM 2

联通。

ISP_CHINA_MOBILE 3

移动。

PortMappingProtocol

端口映射协议。

NameNumberDescription
PORT_MAPPING_PROTOCOL_UNKNOWN 0

未知协议。

PORT_MAPPING_PROTOCOL_TCP 1

TCP 协议。

PORT_MAPPING_PROTOCOL_UDP 2

UDP 协议。

InstanceService

InstanceService 是管理 iPaaS 异构计算资源的服务。

服务设计为幂等。客户端可以提供一个客户端令牌以确保请求的幂等性。如果客户端没有提供客户端令牌,服务将生成一个随机令牌以确保幂等性。

Instance 是实例,指代一切平台支持的异构计算资源。

Shape 是实例的形状,包括架构、计算资源限制等规格信息。

Method NameRequest TypeResponse TypeDescription
RunInstances RunInstancesRequest RunInstancesResponse

创建指定数量的实例。 实例的创建是异步的。创建实例后,需要等待实例状态变为 RUNNING 时,才表示实例已经调度成功并可以使用。

TerminateInstances TerminateInstancesRequest TerminateInstancesResponse

终止指定的实例。 实例的终止是异步的。终止实例后,需要等待实例状态变为 TERMINATED 时,才表示实例已经终止成功。

DescribeInstances DescribeInstancesRequest DescribeInstancesResponse

查询实例的状态。可以通过类似实例 ID 的过滤条件查询实例。

GetInstancePowerState GetInstancePowerStateRequest GetInstancePowerStateResponse

获取实例的电源状态。

StartInstance StartInstanceRequest StartInstanceResponse

启动实例。 使用默认参数启动实例。如果需要对启动参数进行更多的控制,请使用具体架构的 InstanceService 中的方法。

StopInstance StopInstanceRequest StopInstanceResponse

停止实例。 使用默认参数停止实例。如果需要对停止参数进行更多的控制,请使用具体架构的 InstanceService 中的方法。

RestartInstance RestartInstanceRequest RestartInstanceResponse

重启实例。 使用默认参数重启实例。如果需要对重启参数进行更多的控制,请使用具体架构的 InstanceService 中的方法。

meta.proto

Top

GetVersionRequest

GetVersionRequest 听起来是获取版本信息的请求,但是传了一些意义不明的参数用来调试 gRPC。

FieldTypeLabelDescription
field_a string

field_b string

GetVersionResponse

GetVersionResponse 听起来是获取版本信息的响应,但是其实还没有版本这么一回事。

FieldTypeLabelDescription
version string

版本号,但是其实还没有版本这么一回事。

MetaService

MetaService 听起来是用来获取服务的版本、环境、机房等信息,不过目前啥也设计。

Method NameRequest TypeResponse TypeDescription
GetVersion GetVersionRequest GetVersionResponse

听起来是用来获取服务的版本信息,但是其实还没有版本这么一回事。

task.proto

Top

GetTaskResultRequest

获取任务的处理结果请求。

FieldTypeLabelDescription
client_task_token string

你提供的唯一、区分大小写的标识符,以确保请求的幂等性。 如果你没有指定客户端令牌,服务将使用随机生成的令牌以确保幂等性。

task_id string

发起任务时返回的任务 ID。

datacenter string optional

数据中心代码。 当直连数据中心时,此参数可选。若传入,则必须和当前数据中心一致。 当通过跨数据中心网关访问时,若通过 client_task_token 查询,则必须传入该参数或是 instance_id。

instance_id string optional

相关联的实例 ID。 当直连数据中心时,此参数可选。若传入,则必须和要查询的任务关联的实例 ID 一致。 当通过跨数据中心网关访问时,若通过 client_task_token 查询,则必须传入该参数或是 datacenter。

GetTaskResultResponse

获取任务的处理结果响应。

FieldTypeLabelDescription
finished bool

任务是否已经完成。

result google.protobuf.Any

异步任务结果。 如果任务还没有完成,该字段为空。 如果任务完成但失败了,该字段包含任务的错误信息,是 google.rpc.Status 类型。 如果任务完成且成功了,该字段包含任务的处理结果。具体是什么类型的消息,请参见发起任务的接口文档。

started_at google.protobuf.Timestamp

任务运行开始时间。

finished_at google.protobuf.Timestamp

任务运行结束时间。

client_task_token string optional

你提供的唯一、区分大小写的标识符,以确保请求的幂等性。 如果你没有指定客户端令牌,服务将使用随机生成的令牌以确保幂等性。

task_id string

发起任务时返回的任务 ID。

TaskResponse

各种异步任务的响应。结果请通过 TaskService.GetTaskResult 接口获取。

FieldTypeLabelDescription
task_id string

将来可以通过 TaskService.GetTaskResult 查询的任务 ID。

TaskService

TaskService 是管理任务的服务。

服务设计为幂等。在发起任务时,客户端可以提供一个客户端令牌以确保请求的幂等性。如果客户端没有提供客户端令牌,服务将生成一个随机令牌以确保幂等性。

一般来说,如果你请求的接口包含 client_task_token 字段,则这个接口便是一个发起任务的接口。可以使用本服务查询任务的处理结果。

如果接口名不包含 Async,是同步接口,在调用会立即返回任务的处理结果。如果你没能收到响应,可以通过 GetTaskResult 再次查询结果。

如果接口名包含 Async,是异步接口,在调用会返回任务的 ID。你可以稍后通过 GetTaskResult 查询任务的处理结果。

任务有时效性。在任务创建一段时间(7 天)后,将无法再查询到任务结果。

当任务过期后,再次使用同一 client_task_token 发起任务时,将视为新任务(原先的已经过期)。

因此,你应该在任务完成后尽快查询任务的处理结果,不要重用 client_task_token。

Method NameRequest TypeResponse TypeDescription
GetTaskResult GetTaskResultRequest GetTaskResultResponse

获取任务的处理结果。

volume.proto

Top

CloneVolumeRequest

克隆存储卷请求。

FieldTypeLabelDescription
base_volume_id string

基础的存储卷 ID。

new_name string

新存储卷名称。

CloneVolumeResponse

克隆存储卷响应。

FieldTypeLabelDescription
volume_id string

克隆后的存储卷 ID。

CreateVolumeRequest

创建存储卷请求。

FieldTypeLabelDescription
name string

存储卷名称。

volume_type VolumeType

存储卷类型。

volume_config VolumeConfigInput

存储卷配置。

placement VolumePlacement

存储卷的放置位置。

CreateVolumeResponse

创建存储卷响应。

FieldTypeLabelDescription
volume_id string

刚创建的存储卷 ID。

DestroyVolumeRequest

销毁存储卷请求。

FieldTypeLabelDescription
volume_id string

要销毁的存储卷 ID。

DestroyVolumeResponse

销毁存储卷响应。

SnapshotVolumeRequest

创建快照存储卷请求。

FieldTypeLabelDescription
base_volume_id string

要创建快照的存储卷 ID。

new_name string

快照存储卷名称。

SnapshotVolumeResponse

创建快照存储卷响应。

FieldTypeLabelDescription
volume_id string

创建的快照存储卷 ID。

VolumeConfigInput

存储卷配置。

FieldTypeLabelDescription
android_container_system arch.android_container.SystemVolumeConfig

适用于 Android 容器的系统卷配置。

android_container_data arch.android_container.DataVolumeConfig

适用于 Android 容器的数据卷配置。

android_container_app_data arch.android_container.AppDataVolumeConfig

适用于 Android 容器的应用数据卷配置。

VolumePlacement

存储卷的放置位置。

FieldTypeLabelDescription
instance_id string

实例 ID。 卷将存放在与此实例能访问到的最佳位置。

shape_name string

Shape 名称。 卷将存放在与这种 Shape 能访问到的最佳位置。

datacenter string optional

数据中心代码。 当直连数据中心时,此参数可选。若传入,则必须和当前数据中心一致。 当通过跨数据中心网关访问时: * 若指定了 instance_id,则此字段也可选,因为 instance_id 中蕴涵了数据中心信息。 * 否则,必须传入该参数。

VolumeType

存储卷类型。

NameNumberDescription
VOLTYPE_UNKNOWN 0

VOLTYPE_ANDROID_CONTAINER_SYSTEM 1

适用于 Android 容器的系统卷。

VOLTYPE_ANDROID_CONTAINER_DATA 2

适用于 Android 容器的数据卷。

VOLTYPE_ANDROID_CONTAINER_APP_DATA 3

适用于 Android 容器的应用数据卷。

VolumeService

VolumeService 是管理存储卷的服务。

Method NameRequest TypeResponse TypeDescription
CreateVolume CreateVolumeRequest CreateVolumeResponse

创建存储卷。

SnapshotVolume SnapshotVolumeRequest SnapshotVolumeResponse

创建快照存储卷。 快照存储卷是一种只读的存储卷,是存储卷在创建快照时的数据的快照。 快照存储卷的数据不可修改,但可以用于克隆出新的存储卷。

CloneVolume CloneVolumeRequest CloneVolumeResponse

克隆存储卷。 克隆操作将一个快照存储卷克隆为一个新的存储卷。新的存储卷不再受快照卷的只读限制。

DestroyVolume DestroyVolumeRequest DestroyVolumeResponse

销毁存储卷。 销毁存储卷时,存储卷的数据将被永久删除。 创建有快照存储卷的存储卷不能被删除,必须先删除快照存储卷。

arch/android_container/instance.proto

Top

AdbExecuteRequest

通过 adb 执行任意 shell 命令请求。

FieldTypeLabelDescription
client_task_token string optional

instance_id string

command string

AdbExecuteResponse

通过 adb 执行任意 shell 命令响应。

FieldTypeLabelDescription
stdout bytes

stderr bytes

exit_code int32

AppDataVolume

应用数据镜像信息。

FieldTypeLabelDescription
volume_id string

应用数据镜像 ID。

mutable bool

是否要修改应用数据镜像。 为 false 时,将以只读镜像 + 可写 overlay 的方式挂载应用数据卷。 为 true 时,将以读写模式直接挂载应用数据卷。请注意,这种情况下,应用数据卷只能被一个实例挂载。

ArchitectureConfig

Android 容器架构计算资源的配置。

FieldTypeLabelDescription
system_volume_id string

系统镜像 ID。

data_volume_id string optional

数据镜像 ID。

mutable_data bool optional

是否要修改数据镜像。 为 false 时,将以只读镜像 + 可写 overlay 的方式挂载数据卷。 为 true 时,将以读写模式直接挂载数据卷。请注意,这种情况下,数据卷只能被一个实例挂载。

app_data_volumes AppDataVolume repeated

应用数据镜像信息列表。

ExecInContainerRequest

通过容器能力执行任意 shell 命令请求。

FieldTypeLabelDescription
client_task_token string optional

instance_id string

command string

ExecInContainerResponse

通过容器能力执行任意 shell 命令响应。

FieldTypeLabelDescription
stdout bytes

stderr bytes

exit_code int32

HostRestartResponse

宿主重启响应。(仅在 InitiateBulkRestartResponse 中,当请求重启的实例覆盖整个宿主时,才会返回)

InitiateBulkRestartRequest

批量重启容器请求。

FieldTypeLabelDescription
client_task_token string optional

instance_ids string repeated

force_host_restart bool optional

是否要强制重启宿主。 如果为 true,当实例的宿主不允许被重启时,将跳过失败。 如果为 false,当实例的宿主不允许被重启时,将单独重启容器。

InitiateBulkRestartResponse

批量重启容器响应。

queued + errors 会覆盖所有的 instance_ids。

FieldTypeLabelDescription
queued InitiateBulkRestartResponse.QueuedEntry repeated

key 是 instance_id,value 是 task_id。

errors InitiateBulkRestartResponse.ErrorsEntry repeated

key 是 instance_id,value 是错误信息。

InitiateBulkRestartResponse.ErrorsEntry

FieldTypeLabelDescription
key string

value google.rpc.Status

InitiateBulkRestartResponse.QueuedEntry

FieldTypeLabelDescription
key string

value string

InstallApkRequest

安装 APK 请求。

FieldTypeLabelDescription
client_task_token string optional

instance_id string

package_name string

sha256 bytes optional

uid int32 optional

默认值是 0,即自动分配,但如果存在对应应用数据卷,默认值将自动使用对应的 UID。

url string

no_replace bool optional

是否要禁止覆盖安装。

if_package_exists InstallApkPackageConflictAction optional

决定包已经存在的时候的行为。

InstallApkResponse

安装 APK 响应。

KillRequest

强制停止容器请求。

FieldTypeLabelDescription
client_task_token string optional

instance_id string

KillResponse

强制停止容器响应。

MountAppDataVolumeRequest

挂载额外的应用数据卷请求。

FieldTypeLabelDescription
client_task_token string optional

instance_id string

app_data_volume AppDataVolume

purge_overlay bool optional

在挂载 mutable=false 的应用数据卷时,是否要清空(之前保留的)overlay。 如果挂载的不是 mutable=false 的应用数据卷,这个字段会被忽略。 如果之前卸载的时候没有保留,这个字段也会被忽略。 详见 UnmountAppDataVolumeRequest.keep_overlay 字段。

MountAppDataVolumeResponse

挂载额外的应用数据卷响应。

ReplaceSystemVolumeRequest

替换系统镜像请求。

FieldTypeLabelDescription
client_task_token string optional

instance_id string

new_system_volume_id string

ReplaceSystemVolumeResponse

替换系统镜像响应。

ResetRequest

重置容器请求。

FieldTypeLabelDescription
client_task_token string optional

instance_id string

ResetResponse

重置容器响应。

RestartRequest

重启容器请求。

FieldTypeLabelDescription
client_task_token string optional

instance_id string

RestartResponse

重启容器响应。

StartRequest

启动容器请求。

FieldTypeLabelDescription
client_task_token string optional

instance_id string

StartResponse

启动容器响应。

StopRequest

停止容器请求。

FieldTypeLabelDescription
client_task_token string optional

instance_id string

StopResponse

停止容器响应。

UnmountAppDataVolumeRequest

卸载额外的应用数据卷请求。

FieldTypeLabelDescription
client_task_token string optional

instance_id string

app_data_volume_id string

keep_overlay bool optional

在卸载 mutable=false 的应用卷时,是否要保留 overlay。 保留的话,可以在下次挂载时,继续使用。 以 package_name 和 uid 作为唯一标识。 如果卸载的不是 mutable=false 的应用数据卷,这个字段会被忽略。 如果保留了,仍然可以通过下面的方式清空: * AndroidContainerInstanceService.MountAppDataVolume({ purge_overlay: true }) * AndroidContainerInstanceService.Reset() * InstanceService.TerminateInstances()

UnmountAppDataVolumeResponse

卸载额外的应用数据卷响应。

InstallApkPackageConflictAction

NameNumberDescription
PACKAGE_CONFLICT_ACTION_IGNORE 0

遇到冲突时,不卸载。 降级或包名不符直接失败; 升级则看 no_replace 的取值:如果允许覆盖,则直接成功。

PACKAGE_CONFLICT_ACTION_UNINSTALL_KEEP_DATA_VOLUME 1

遇到冲突时,卸载旧包再安装新包,通过一定方式保留应用数据。

PACKAGE_CONFLICT_ACTION_UNINSTALL_WITH_DATA 2

遇到冲突时,卸载旧包再安装新包,不保留应用数据。

AndroidContainerInstanceService

专用来操作 Android 容器架构计算资源的服务。

Method NameRequest TypeResponse TypeDescription
Start StartRequest StartResponse

启动 Android 容器。

Stop StopRequest StopResponse

停止 Android 容器。

Kill KillRequest KillResponse

强制停止 Android 容器。

Restart RestartRequest RestartResponse

重启 Android 容器。

InitiateBulkRestartAsync InitiateBulkRestartRequest .ultima.TaskResponse

发起批量重启 Android 容器。 请注意,InitiateBulkRestart 的返回值仅代表任务已拆解(并返回拆解后的子任务),并不代表容器已重启。 返回结果中将包含每个实例对应的任务 ID。 当请求重启的实例覆盖整个宿主时,将对宿主进行重启,且上述返回中对应实例将共享同一个任务 ID。 目前,一次最多传入 16 个实例。

Reset ResetRequest ResetResponse

重置 Android 容器。 将清空容器的一切用户数据,恢复到初始状态。 具体的操作是: 1. 停止容器 2. 清空数据卷和应用数据卷中的临时数据(如果卷是以读写模式挂载的,那么卷中的数据不会被清空) 3. 启动容器

AdbExecute AdbExecuteRequest AdbExecuteResponse

同步地通过 adb 执行任意 shell 命令。 这个接口将有最大超时时间限制。如需长时间执行,请使用异步接口。

AdbExecuteAsync AdbExecuteRequest .ultima.TaskResponse

异步地通过 adb 执行任意 shell 命令。

ExecInContainer ExecInContainerRequest ExecInContainerResponse

同步地通过容器能力执行任意 shell 命令。 这个接口将有最大超时时间限制。如需长时间执行,请使用异步接口。

ExecInContainerAsync ExecInContainerRequest .ultima.TaskResponse

异步地通过容器能力执行任意 shell 命令。

MountAppDataVolume MountAppDataVolumeRequest MountAppDataVolumeResponse

挂载额外的应用数据卷。

UnmountAppDataVolume UnmountAppDataVolumeRequest UnmountAppDataVolumeResponse

卸载额外的应用数据卷。 请注意,此操作将导致正在运行的对应应用强制退出。

InstallApk InstallApkRequest InstallApkResponse

安装 APK。 如果已有对应包名的应用数据卷挂载,将校验 UID 是否匹配。 ## 可能的错误 `PM_INSTALL_FAILED` 调用安卓系统的 `pm install` 失败。 ```textproto status { details { [type.googleapis.com/google.rpc.ErrorInfo] { reason "PM_INSTALL_FAILED" domain "ultima.arch.android_container" metadata { key: "message" value: "..." } # `pm install` 命令输出的原始错误消息。 } } } ## 可能的错误 `CANNOT_KEEP_DATA_VOLUME` 当 ifPackageExists = PACKAGE_CONFLICT_ACTION_UNINSTALL_KEEP_DATA_VOLUME 时, 且之前安装过同 packageName 的包时,由于没有对应的 AppDataVolume 无法继续操作。 ```textproto status { details { [type.googleapis.com/google.rpc.ErrorInfo] { reason "CANNOT_KEEP_DATA_VOLUME" domain "ultima.arch.android_container" } } } ```

InstallApkAsync InstallApkRequest .ultima.TaskResponse

异步地安装 APK。 如果已有对应包名的应用数据卷挂载,将校验 UID 是否匹配。 可能的错误请参考 InstallApk。

ReplaceSystemVolume ReplaceSystemVolumeRequest ReplaceSystemVolumeResponse

替换系统镜像。 具体的操作是: 1. 停止容器 2. 替换系统镜像 3. 启动容器

ReplaceSystemVolumeAsync ReplaceSystemVolumeRequest .ultima.TaskResponse

异步地替换系统镜像。 具体的操作是: 1. 停止容器 2. 替换系统镜像 3. 启动容器

arch/android_container/volume.proto

Top

AppDataVolumeConfig

适用于 Android 容器的应用数据卷配置。

FieldTypeLabelDescription
system_volume_id string

size uint64

package_name string

uid int32

DataVolumeConfig

适用于 Android 容器的数据卷配置。

FieldTypeLabelDescription
system_volume_id string

size uint64

SystemVolumeConfig

适用于 Android 容器的系统卷配置。

Scalar Value Types

.proto TypeNotesC++JavaPythonGoC#PHPRuby
double double double float float64 double float Float
float float float float float32 float float Float
int32 Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. int32 int int int32 int integer Bignum or Fixnum (as required)
int64 Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. int64 long int/long int64 long integer/string Bignum
uint32 Uses variable-length encoding. uint32 int int/long uint32 uint integer Bignum or Fixnum (as required)
uint64 Uses variable-length encoding. uint64 long int/long uint64 ulong integer/string Bignum or Fixnum (as required)
sint32 Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. int32 int int int32 int integer Bignum or Fixnum (as required)
sint64 Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. int64 long int/long int64 long integer/string Bignum
fixed32 Always four bytes. More efficient than uint32 if values are often greater than 2^28. uint32 int int uint32 uint integer Bignum or Fixnum (as required)
fixed64 Always eight bytes. More efficient than uint64 if values are often greater than 2^56. uint64 long int/long uint64 ulong integer/string Bignum
sfixed32 Always four bytes. int32 int int int32 int integer Bignum or Fixnum (as required)
sfixed64 Always eight bytes. int64 long int/long int64 long integer/string Bignum
bool bool boolean boolean bool bool boolean TrueClass/FalseClass
string A string must always contain UTF-8 encoded or 7-bit ASCII text. string String str/unicode string string string String (UTF-8)
bytes May contain any arbitrary sequence of bytes. string ByteString str []byte ByteString string String (ASCII-8BIT)