架构配置。请只使用其中一个字段,需要和 Shape 架构一致。
Field | Type | Label | Description |
android_container | arch.android_container.ArchitectureConfig | Android 容器架构计算资源的配置。 |
架构配置。请只使用其中一个字段,需要和 Shape 架构一致。
Field | Type | Label | Description |
android_container | arch.android_container.ArchitectureConfig | Android 容器架构计算资源的配置。 |
|
struct | google.protobuf.Struct |
|
DescribeInstancesRequest 是查询实例的请求。
Field | Type | Label | Description |
instance_ids | string | repeated | 需要查询的实例 ID。 如果你提供了实例 ID,则只包含指定的实例。否则,包含所有实例。 |
filters | InstanceFilter | repeated | 额外过滤条件。 |
max_results | uint64 | optional | 最大返回结果数量。 |
next_token | string | optional | 下一页令牌。 如果你提供了下一页令牌,则返回从该令牌指定的位置开始的结果。 |
DescribeInstancesResponse 是查询实例的响应。
Field | Type | Label | Description |
instances | Instance | repeated | 实例列表。 |
next_token | string | optional | 下一页令牌。 如果还有更多结果,将返回下一页令牌。 如果你要查询更多结果,请在下一次查询中保持查询条件一致,并传入下一页令牌。 |
GetInstancePowerStateRequest 是获取实例电源状态的请求。
Field | Type | Label | Description |
instance_id | string | 实例 ID。 |
GetInstancePowerStateResponse 是获取实例电源状态的响应。
Field | Type | Label | Description |
power_state | InstancePowerState | 实例电源状态。 |
实例信息。
Field | Type | Label | Description |
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。 |
过滤条件。
Field | Type | Label | Description |
shape_name | string | Shape 名称。 |
|
instance_name | string | 实例名称。 |
|
client_token | string | 客户端令牌。 |
|
state | InstanceState | 实例状态。 |
|
datacenter | string | 数据中心代码。 |
实例状态变化。
Field | Type | Label | Description |
instance_id | string | 实例 ID。 |
|
current_state | InstanceState | 当前状态。 |
|
previous_state | InstanceState | 之前的状态。 |
网络地址属性。
只可能包含一个字段。
Field | Type | Label | Description |
public | PublicNetworkAddressAttribute |
|
|
private | PrivateNetworkAddressAttribute |
|
Field | Type | Label | Description |
address | string | 映射后的地址。 |
|
port | uint32 | 映射后的端口。 |
|
name | string | 线路名称。 通常情况下,你应该使用 attribute 属性来判断。这个字段仅在同种线路有多个地址时,用于区分不同的线路。 |
|
attribute | NetworkAddressAttribute | 网络地址属性。 |
端口映射规则信息。
Field | Type | Label | Description |
id | string | 规则 ID。 |
|
protocol | PortMappingProtocol | 协议。 |
|
container_port | uint32 | 容器端口。 |
|
mapped_addresses | PortMappingMappedAddress | repeated | 映射后的地址信息。 |
私有网络地址属性。
暂无属性
公网地址属性。
Field | Type | Label | Description |
preferred_providers | InternetServiceProvider | repeated | 适合的运营商。 |
RestartInstanceRequest 是重启实例的请求。
使用默认参数重启实例。如果需要对重启参数进行更多的控制,请使用具体架构的 InstanceService 中的方法。
Field | Type | Label | Description |
client_task_token | string | optional |
|
instance_id | string |
|
RestartInstanceResponse 是重启实例的响应。
RunInstancesRequest 是创建实例的请求。
Field | Type | Label | Description |
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 是创建实例的响应。
Field | Type | Label | Description |
instance_ids | string | repeated | 创建的实例的实例 ID。 |
StartInstanceRequest 是启动实例的请求。
使用默认参数启动实例。如果需要对启动参数进行更多的控制,请使用具体架构的 InstanceService 中的方法。
Field | Type | Label | Description |
client_task_token | string | optional |
|
instance_id | string |
|
StartInstanceResponse 是启动实例的响应。
StopInstanceRequest 是停止实例的请求。
使用默认参数停止实例。如果需要对停止参数进行更多的控制,请使用具体架构的 InstanceService 中的方法。
Field | Type | Label | Description |
client_task_token | string | optional |
|
instance_id | string |
|
StopInstanceResponse 是停止实例的响应。
TerminateInstancesRequest 是终止实例的请求。
Field | Type | Label | Description |
instance_ids | string | repeated | 需要终止的实例 ID。 |
TerminateInstancesResponse 是终止实例的响应。
Field | Type | Label | Description |
instances | InstanceStateChange | repeated | 实例状态变化信息列表。 |
架构。
Name | Number | Description |
ARCH_UNKNOWN | 0 | 未知架构。 |
ARCH_ANDROID_CONTAINER | 1 | Android 容器。 |
实例电源状态
Name | Number | Description |
INSTANCE_POWER_STATE_UNKNOWN | 0 | 未知状态。 |
INSTANCE_POWER_STATE_ON | 1 | 实例已开机。 |
INSTANCE_POWER_STATE_OFF | 2 | 实例已关机。 |
INSTANCE_POWER_STATE_CHANGING | 3 | 实例电源状态正在发生变化。 |
实例状态。
请注意,这些状态和计算资源实际是否“开机“或”关机“无关。实例处于 RUNNING 状态,仅表示实例已经调度成功并可以使用。
如果需要“开机”“关机”状态,请参考 GetInstancePowerState 方法和 InstancePowerState 枚举。
Name | Number | Description |
INSTANCE_STATE_UNKNOWN | 0 | 未知状态。 |
INSTANCE_STATE_PENDING | 1 | 创建中 |
INSTANCE_STATE_RUNNING | 2 | 可运行的 |
INSTANCE_STATE_TERMINATED | 3 | 主动停止运行的 |
INSTANCE_STATE_FAILED | 4 | 被迫停止运行的 |
运营商。
Name | Number | Description |
ISP_UNKNOWN | 0 | 未知运营商。 |
ISP_CHINA_TELECOM | 1 | 电信。 |
ISP_CHINA_UNICOM | 2 | 联通。 |
ISP_CHINA_MOBILE | 3 | 移动。 |
端口映射协议。
Name | Number | Description |
PORT_MAPPING_PROTOCOL_UNKNOWN | 0 | 未知协议。 |
PORT_MAPPING_PROTOCOL_TCP | 1 | TCP 协议。 |
PORT_MAPPING_PROTOCOL_UDP | 2 | UDP 协议。 |
InstanceService 是管理 iPaaS 异构计算资源的服务。
服务设计为幂等。客户端可以提供一个客户端令牌以确保请求的幂等性。如果客户端没有提供客户端令牌,服务将生成一个随机令牌以确保幂等性。
Instance 是实例,指代一切平台支持的异构计算资源。
Shape 是实例的形状,包括架构、计算资源限制等规格信息。
Method Name | Request Type | Response Type | Description |
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 中的方法。 |
GetVersionRequest 听起来是获取版本信息的请求,但是传了一些意义不明的参数用来调试 gRPC。
Field | Type | Label | Description |
field_a | string |
|
|
field_b | string |
|
GetVersionResponse 听起来是获取版本信息的响应,但是其实还没有版本这么一回事。
Field | Type | Label | Description |
version | string | 版本号,但是其实还没有版本这么一回事。 |
MetaService 听起来是用来获取服务的版本、环境、机房等信息,不过目前啥也设计。
Method Name | Request Type | Response Type | Description |
GetVersion | GetVersionRequest | GetVersionResponse | 听起来是用来获取服务的版本信息,但是其实还没有版本这么一回事。 |
获取任务的处理结果请求。
Field | Type | Label | Description |
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。 |
获取任务的处理结果响应。
Field | Type | Label | Description |
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。 |
各种异步任务的响应。结果请通过 TaskService.GetTaskResult 接口获取。
Field | Type | Label | Description |
task_id | string | 将来可以通过 TaskService.GetTaskResult 查询的任务 ID。 |
TaskService 是管理任务的服务。
服务设计为幂等。在发起任务时,客户端可以提供一个客户端令牌以确保请求的幂等性。如果客户端没有提供客户端令牌,服务将生成一个随机令牌以确保幂等性。
一般来说,如果你请求的接口包含 client_task_token 字段,则这个接口便是一个发起任务的接口。可以使用本服务查询任务的处理结果。
如果接口名不包含 Async,是同步接口,在调用会立即返回任务的处理结果。如果你没能收到响应,可以通过 GetTaskResult 再次查询结果。
如果接口名包含 Async,是异步接口,在调用会返回任务的 ID。你可以稍后通过 GetTaskResult 查询任务的处理结果。
任务有时效性。在任务创建一段时间(7 天)后,将无法再查询到任务结果。
当任务过期后,再次使用同一 client_task_token 发起任务时,将视为新任务(原先的已经过期)。
因此,你应该在任务完成后尽快查询任务的处理结果,不要重用 client_task_token。
Method Name | Request Type | Response Type | Description |
GetTaskResult | GetTaskResultRequest | GetTaskResultResponse | 获取任务的处理结果。 |
克隆存储卷请求。
Field | Type | Label | Description |
base_volume_id | string | 基础的存储卷 ID。 |
|
new_name | string | 新存储卷名称。 |
克隆存储卷响应。
Field | Type | Label | Description |
volume_id | string | 克隆后的存储卷 ID。 |
创建存储卷请求。
Field | Type | Label | Description |
name | string | 存储卷名称。 |
|
volume_type | VolumeType | 存储卷类型。 |
|
volume_config | VolumeConfigInput | 存储卷配置。 |
|
placement | VolumePlacement | 存储卷的放置位置。 |
创建存储卷响应。
Field | Type | Label | Description |
volume_id | string | 刚创建的存储卷 ID。 |
销毁存储卷请求。
Field | Type | Label | Description |
volume_id | string | 要销毁的存储卷 ID。 |
销毁存储卷响应。
创建快照存储卷请求。
Field | Type | Label | Description |
base_volume_id | string | 要创建快照的存储卷 ID。 |
|
new_name | string | 快照存储卷名称。 |
创建快照存储卷响应。
Field | Type | Label | Description |
volume_id | string | 创建的快照存储卷 ID。 |
存储卷配置。
Field | Type | Label | Description |
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 容器的应用数据卷配置。 |
存储卷的放置位置。
Field | Type | Label | Description |
instance_id | string | 实例 ID。 卷将存放在与此实例能访问到的最佳位置。 |
|
shape_name | string | Shape 名称。 卷将存放在与这种 Shape 能访问到的最佳位置。 |
|
datacenter | string | optional | 数据中心代码。 当直连数据中心时,此参数可选。若传入,则必须和当前数据中心一致。 当通过跨数据中心网关访问时: * 若指定了 instance_id,则此字段也可选,因为 instance_id 中蕴涵了数据中心信息。 * 否则,必须传入该参数。 |
存储卷类型。
Name | Number | Description |
VOLTYPE_UNKNOWN | 0 | |
VOLTYPE_ANDROID_CONTAINER_SYSTEM | 1 | 适用于 Android 容器的系统卷。 |
VOLTYPE_ANDROID_CONTAINER_DATA | 2 | 适用于 Android 容器的数据卷。 |
VOLTYPE_ANDROID_CONTAINER_APP_DATA | 3 | 适用于 Android 容器的应用数据卷。 |
VolumeService 是管理存储卷的服务。
Method Name | Request Type | Response Type | Description |
CreateVolume | CreateVolumeRequest | CreateVolumeResponse | 创建存储卷。 |
SnapshotVolume | SnapshotVolumeRequest | SnapshotVolumeResponse | 创建快照存储卷。 快照存储卷是一种只读的存储卷,是存储卷在创建快照时的数据的快照。 快照存储卷的数据不可修改,但可以用于克隆出新的存储卷。 |
CloneVolume | CloneVolumeRequest | CloneVolumeResponse | 克隆存储卷。 克隆操作将一个快照存储卷克隆为一个新的存储卷。新的存储卷不再受快照卷的只读限制。 |
DestroyVolume | DestroyVolumeRequest | DestroyVolumeResponse | 销毁存储卷。 销毁存储卷时,存储卷的数据将被永久删除。 创建有快照存储卷的存储卷不能被删除,必须先删除快照存储卷。 |
通过 adb 执行任意 shell 命令请求。
Field | Type | Label | Description |
client_task_token | string | optional |
|
instance_id | string |
|
|
command | string |
|
通过 adb 执行任意 shell 命令响应。
Field | Type | Label | Description |
stdout | bytes |
|
|
stderr | bytes |
|
|
exit_code | int32 |
|
应用数据镜像信息。
Field | Type | Label | Description |
volume_id | string | 应用数据镜像 ID。 |
|
mutable | bool | 是否要修改应用数据镜像。 为 false 时,将以只读镜像 + 可写 overlay 的方式挂载应用数据卷。 为 true 时,将以读写模式直接挂载应用数据卷。请注意,这种情况下,应用数据卷只能被一个实例挂载。 |
Android 容器架构计算资源的配置。
Field | Type | Label | Description |
system_volume_id | string | 系统镜像 ID。 |
|
data_volume_id | string | optional | 数据镜像 ID。 |
mutable_data | bool | optional | 是否要修改数据镜像。 为 false 时,将以只读镜像 + 可写 overlay 的方式挂载数据卷。 为 true 时,将以读写模式直接挂载数据卷。请注意,这种情况下,数据卷只能被一个实例挂载。 |
app_data_volumes | AppDataVolume | repeated | 应用数据镜像信息列表。 |
通过容器能力执行任意 shell 命令请求。
Field | Type | Label | Description |
client_task_token | string | optional |
|
instance_id | string |
|
|
command | string |
|
通过容器能力执行任意 shell 命令响应。
Field | Type | Label | Description |
stdout | bytes |
|
|
stderr | bytes |
|
|
exit_code | int32 |
|
宿主重启响应。(仅在 InitiateBulkRestartResponse 中,当请求重启的实例覆盖整个宿主时,才会返回)
批量重启容器请求。
Field | Type | Label | Description |
client_task_token | string | optional |
|
instance_ids | string | repeated |
|
force_host_restart | bool | optional | 是否要强制重启宿主。 如果为 true,当实例的宿主不允许被重启时,将跳过失败。 如果为 false,当实例的宿主不允许被重启时,将单独重启容器。 |
批量重启容器响应。
queued + errors 会覆盖所有的 instance_ids。
Field | Type | Label | Description |
queued | InitiateBulkRestartResponse.QueuedEntry | repeated | key 是 instance_id,value 是 task_id。 |
errors | InitiateBulkRestartResponse.ErrorsEntry | repeated | key 是 instance_id,value 是错误信息。 |
Field | Type | Label | Description |
key | string |
|
|
value | google.rpc.Status |
|
Field | Type | Label | Description |
key | string |
|
|
value | string |
|
安装 APK 请求。
Field | Type | Label | Description |
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 | 决定包已经存在的时候的行为。 |
安装 APK 响应。
强制停止容器请求。
Field | Type | Label | Description |
client_task_token | string | optional |
|
instance_id | string |
|
强制停止容器响应。
挂载额外的应用数据卷请求。
Field | Type | Label | Description |
client_task_token | string | optional |
|
instance_id | string |
|
|
app_data_volume | AppDataVolume |
|
|
purge_overlay | bool | optional | 在挂载 mutable=false 的应用数据卷时,是否要清空(之前保留的)overlay。 如果挂载的不是 mutable=false 的应用数据卷,这个字段会被忽略。 如果之前卸载的时候没有保留,这个字段也会被忽略。 详见 UnmountAppDataVolumeRequest.keep_overlay 字段。 |
挂载额外的应用数据卷响应。
替换系统镜像请求。
Field | Type | Label | Description |
client_task_token | string | optional |
|
instance_id | string |
|
|
new_system_volume_id | string |
|
替换系统镜像响应。
重置容器请求。
Field | Type | Label | Description |
client_task_token | string | optional |
|
instance_id | string |
|
重置容器响应。
重启容器请求。
Field | Type | Label | Description |
client_task_token | string | optional |
|
instance_id | string |
|
重启容器响应。
启动容器请求。
Field | Type | Label | Description |
client_task_token | string | optional |
|
instance_id | string |
|
启动容器响应。
停止容器请求。
Field | Type | Label | Description |
client_task_token | string | optional |
|
instance_id | string |
|
停止容器响应。
卸载额外的应用数据卷请求。
Field | Type | Label | Description |
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() |
卸载额外的应用数据卷响应。
Name | Number | Description |
PACKAGE_CONFLICT_ACTION_IGNORE | 0 | 遇到冲突时,不卸载。 降级或包名不符直接失败; 升级则看 no_replace 的取值:如果允许覆盖,则直接成功。 |
PACKAGE_CONFLICT_ACTION_UNINSTALL_KEEP_DATA_VOLUME | 1 | 遇到冲突时,卸载旧包再安装新包,通过一定方式保留应用数据。 |
PACKAGE_CONFLICT_ACTION_UNINSTALL_WITH_DATA | 2 | 遇到冲突时,卸载旧包再安装新包,不保留应用数据。 |
专用来操作 Android 容器架构计算资源的服务。
Method Name | Request Type | Response Type | Description |
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. 启动容器 |
适用于 Android 容器的应用数据卷配置。
Field | Type | Label | Description |
system_volume_id | string |
|
|
size | uint64 |
|
|
package_name | string |
|
|
uid | int32 |
|
适用于 Android 容器的数据卷配置。
Field | Type | Label | Description |
system_volume_id | string |
|
|
size | uint64 |
|
适用于 Android 容器的系统卷配置。
.proto Type | Notes | C++ | Java | Python | Go | C# | PHP | Ruby |
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) |