镜像是实例运行的 Android 系统版本。「镜像管理」页面提供稳定可用的公共镜像,也支持用户按业务需要构建自定义镜像。在创建实例时,可选择基于平台的公共镜像或用户自定义的镜像创建实例。
打开云手机控制台,从左侧导航栏中选择「镜像管理 > 公共镜像」,打开「公共镜像管理」页面,即可查看平台提供的稳定可用的公共镜像列表。
点击 操作 栏中 创建实例,可以在弹出的 创建实例 页面中使用选择的公共镜像创建实例。
如业务需要在创建实例时使用构建的自定义镜像,可在「自定义镜像」页面选择在线构建镜像或导入自定义镜像。
在线构建镜像适用于需要在云手机实例中快速预置应用或文件的场景。可在现有可用镜像的基础上,上传需要预置的应用或文件即可完成自定义镜像构建。
打开「自定义镜像」页面,选择使用「在线构建镜像」,点击 管理列表。
打开 在线构建镜像 页面,点击 构建镜像(也可点击 展示使用指引,查看在线构建镜像的步骤说明)。
在弹窗中,输入构建镜像的基本信息、选择镜像基线、上传预先打包好的内置文件压缩包(可参考 预置应用或文件上传说明)。
确认镜像构建信息无误后,点击 确定,系统将开始构建镜像。
镜像构建任务执行完成后,构建成功的镜像将会显示在自定义镜像列表中。
准备需要打包的预置应用或文件,并确定文件需要内置到镜像内的目录,参考以下说明:
目录 | 说明 |
---|---|
/system/framework | 该目录用于存放资源型应用(系统框架) |
/system/app | 该目录用于存放系统级应用,目录下的应用能获取到比较高的权限,应用不可卸载 |
/system/priv-app | 该目录是从 Android 4.4 开始出现的目录,用于存放系统核心应用,能获取到比 system/app/ 下应用更高的权限;应用不可卸载,如:Setting、SystemUI 等 |
/vendor/app | 该目录用于存放厂商的一些应用,不可卸载 |
定义需要保存应用的文件夹(文件夹名称可自定义,但后续镜像更新时需要保持一致),并将需要打包的文件拷贝到对应的目录下,参考以下示例:
/system/priv-app/GoogleFramework/GoogleFramework.apk /system/priv-app/GoogleFramework/lib/arm64/
注意:需要确保目录和文件层级准确无误。内置到 system
分区的文件,最外层文件夹一定是 system
;内置到 vendor
分区的文件,最外层文件夹一定是 vendor
。参考以下示例:
需要内置的文件准备完成后,将 system
文件夹和 vendor
文件夹(若有)一起打包成 file.zip
文件。参考以下示例:
导入自定义镜像适用于需要定制化功能或服务开发的使用场景。可基于平台提供的 AOSP 镜像基线版本构建自定义镜像(详细步骤,参考 构建自定义镜像最佳实践)。在构建完成自定义镜像并将镜像文件上传至火山引擎对象存储后,导入镜像相关参数完成自定义镜像构建。
打开「自定义镜像」页面,选择使用「导入自定义镜像」,点击 管理列表。
打开 导入自定义镜像 页面,在 自定义镜像管理 标签页下,点击 导入镜像(也可点击 展示使用指引,查看导入自定义镜像的步骤说明)。
在 导入镜像 弹窗中,选择保存镜像文件的对象存储桶名称、输入保存镜像文件的目录、输入镜像名称和描述后,点击 确定。
自定义镜像参数提交镜像制作后,镜像将进入 导入中 和 创建中 状态。创建完成后,镜像进入 可用 状态。
构建自定义镜像前,需要配置下载和编译 AOSP 镜像基线代码的服务器的公网 IP。
打开 导入自定义镜像 页面,在 访问IP白名单 标签页下,点击 新增IP白名单。
在 新增访问IP白名单 弹窗中,填写加白的服务器 IP 地址(可通过 curl ifconfig.me
获取)和描述信息。
点击 确定,保存配置。
构建自定义镜像前,需要配置下载和编译 AOSP 镜像基线代码的服务器的 SSH 密钥对。
打开 导入自定义镜像 页面,在 SSH密钥对 标签页下,点击 创建SSH密钥对。
在 创建SSH密钥对 弹窗中,填写密钥对名称、选择自动创建密钥对或导入已有公钥(可通过 cat ~/.ssh/id_rsa.pub
获取)、选择密钥对类型、输入密钥对的描述信息。
点击 确定,创建 SSH 密钥对,并下载保存生成的私钥。
构建自定义镜像后,可以基于自定义镜像直接创建实例。
在自定义镜像列表的操作列中,点击 创建实例。
在弹出的 创建实例 弹窗中使用选择的自定义镜像创建实例。