apex简单介绍

关键知识点

apex的作用

APEX(Android Pony EXpress) 是 Android 10 引入的一个特性,用于更新和替换设备上的关键系统组件,而无需完整的系统更新。

APEX 有几个主要目标和特性:

  1. 模块化更新:APEX 允许系统组件被打包成单独的模块,并且可以独立于整个系统镜像进行更新。这使得系统组件的更新更加快速和安全。
  2. 减少设备停机时间:使用 APEX,可以在不重启设备或在下一次重启时应用更新,从而减少了因系统更新而造成的停机时间。
  3. 安全性和稳定性:APEX 设计了一套机制来确保只有经过验证的模块才能被安装,从而提高了系统的安全性和稳定性。
  4. 预构建的系统组件:APEX 文件是预构建的,可以在设备制造过程中或通过 OTA 更新分发,这使得系统组件的部署更加灵活。

APEX 是 Google 为了改善 Android 更新过程而开发的,特别是对于那些通常很难得到及时更新的系统底层组件。它的一个关键好处是能够提供类似于应用更新的体验来更新系统本身的关键部分。

与APK的不同

apex是一种打包格式,apex也会将apk打包进来的。

apex更关注的是系统组件更新,而apk则是上层应用的更新。

apex文件格式

在这里插入图片描述

apex的android.bp定义

在这里插入图片描述

apex module

apex是一种打包格式,将一些二进制文件、共享库等系统级组件打包到apex文件中。

  • name:com.android.extservices
  • defaults:默认配置,见com.android.extservices-defaults
  • manifest: 描述此 APEX 捆绑程序元信息的 Json 清单文件,采用默认的"apex_manifest.json“

apex_defaults module

apex_defaults为其他 apex 模块提供可默认的属性。

  • name:com.android.extservices-defaults
  • updatable bool, Whether this APEX is considered updatable or not. When set to true, this will enforce additional rules for making sure that the APEX is truly updatable. To be updatable, min_sdk_version should be set as well. This will also disable the size optimizations like symlinking to the system libs. Default is true.(APEX 是否可更新。设置为 true 时,将执行附加规则以确保 APEX 真正可更新。要实现可更新,还应设置 min_sdk_version。这还将禁用系统库的符号链接等大小优化功能。默认为 true。)
  • key string, Name of the apex_key module that provides the private key to sign this APEX bundle.(apex_key模块的名称,该模块提供用于签署此APEX包的私钥。)
  • certificate string, Specifies the certificate and the private key to sign the zip container of this APEX. If this is “foo”, foo.x509.pem and foo.pk8 under PRODUCT_DEFAULT_DEV_CERTIFICATE are used as the certificate and the private key, respectively. If this is “:module”, then the certificate and the private key are provided from the android_app_certificate module named “module”.(证书字符串,指定用于签署此 APEX 压缩包的证书和私钥。如果为 “foo”,则分别使用 PRODUCT_DEFAULT_DEV_CERTIFICATE 下的 foo.x509.pem 和 foo.pk8 作为证书和私钥。如果是":module",则证书和私钥由名为 "module "的 android_app_certificate 模块提供。)
  • apps list of string, List of APKs that are embedded inside this APEX.(列表下的apk会被打包到该apex)

apex_manifest.json

在这里插入图片描述

apex目录下加密相关内容

在这里插入图片描述

被apex打包的应用的android.bp定义

在这里插入图片描述

  • apex_available 字符串列表,该模块在 APEX 中的可用性。只有列出的 APEXes 才能包含该模块。如果模块有存根,则其他 APEX 和平台可通过存根访问该模块(取决于可见性)。"//apex_available:anyapex "是一个伪 APEX 名称,可与任何 APEX 匹配。
    “//apex_available:platform” 指的是非 APEX 分区,如 “system.img”。"com.android.gki.*"匹配任何前缀为 “com.android.gki. “的 APEX 模块名称。默认为[”//apex_available:platform”]。)
    实际就是通过”apex_available"标签来指定哪个apex可以打包该apk。这里指定了两个:com.android.extservices,test_com.android.extservices。

总结

apex是为了实现不用更新系统即可更新系统组件而创造的。

apex是一种打包格式,它可以打包apk,bin,so等。

参考

了解一下,Android 10中的APEX-优快云博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值