AB升级之odex文件首次开机处理

本文介绍了一种针对AB升级方案的odex优化方法,通过将odex文件存储在system_other.img,减小system.img大小,节省存储空间。首次开机时,odex文件会被复制到data分区,由init进程执行,通过sys.cppreopt属性与PackageManagerService交互。

开启AB升级方案的项目,因为很多需要升级的镜像都有两份,所以存储空间比较浪费。为缓解此问题,有个针对odex的优化方案。

编译版本会生成两个system镜像:system.img和system_other.img,其中,system_other.img中存储的就是odex文件,这样system.img就能小很多,意味着可以为system分区划分较小的空间。

在首次开机时,假设system.img镜像存储在A slot,那么此时的B slot是闲置的。所以可以把system.img刷入A slot的system分区,把system_other.img刷入B slot的system分区。在首次开机时,再把system_other.img中的odex文件拷贝到data分区。

https://source.android.com/devices/tech/dalvik/configure.html#other_odex

开机后copy odex文件的相关代码

/frameworks/base/services/core/java/com/android/server/pm/PackageManagerService.java

public PackageManagerService(Context context, Installer installer,
              boolean factoryTest, boolean onlyCore) {
    ...
    // 首次开机时才执行
    if (!mOnlyCore && mFirstBoot) {
        requestCopyPreoptedFiles();
    }
    ...
}

/**
 * Requests that files preopted on a secondary s
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值