如何在ROM中集成可卸载的APK

来源:互联网 发布:矩阵的谱范数怎么求 编辑:程序博客网 时间:2024/05/18 01:27

在Android手机产品化的过程中,常常遇到集成第三方APK的问题,而需要集成的APK又分为可卸载/不可卸载两类,对于不可卸载的APK,比较简单,只需要将其编译到system.img即可,对于可卸载的APK则稍显复杂。

方法1:集成到userdata.img

该方法十分简单,集成到userdata.img /data/app目录下得apk自然是可以卸载的。但有以下两个问题:

       1、版本发布时,userdata.img  一般不参与烧录(在有些型号机是这样的),这样集成到userdata中的apk不会被发布。

       2、用户恢复出厂设置后,data分区会被擦除,这些APK消失的无影无踪,不符合出厂预置的要求。


方法2:集成到system.img

在system里面新建一个/system/pre-install目录,将这些APK都放置到该目录下。在系统第一次启动时,将这些APK拷贝到/data/app目录下。

这样用户恢复出厂设置后,系统会认为是第一次启动,会再次拷贝,这些APK不会消失。

而且只有第一次启动才拷贝,卸载的应用会从/data/app中删除,不会凭空出现。

        问题1、如何判断是否是第一次启动

PackageManagerService.java中提供了函数isFirstBoot()。

        问题2:在何处实现拷贝

        该功能跟包管理密切相关,就在PackageManagerService.java开机扫描安装包时,判断isFirstBoot是否为True,如果为True则执行拷贝。


0 0