【笔记】PKMS 预置第三方应用可卸载

1.原始方案:

1.创建 “/system/third_app”文件夹

2. 预置第三方APP的Android.mk 中 LOCAL_MODULE_PATH = “/system/third_app”

3. PKMS 源码中添加 copy 代码:

    (1): isFirstBoot() 判断第一次开机之后;

    (2):scanDirLI() 扫描app之前

    (3): copy 的路径是 “/system/third_app” ---> "/data/app"

              ----:question : PKMS 扫描/system/app 和 /data/app 下的应用的区别在于调用scaDirLI()时,/system/app 会传下去“PackageParser.PARSE_IS_SYSTEM”  的parseFlag 而/data/app 传下去的parseFlag 是null

             -----: 直接调用FileUtils.copyFile 进行copy

 

缺点:

1.copy到data/app下会有两份apk,占空间;

 

 

 

 

*****

应用放在/system/third_app/<PackageName>/XXXX.apk

则扫描时 生成的lib库文件 和 dex 文件的路径就在/system/third_app/<PackageName>/lib/****   和   /system/third_app/<PackageName>/oat/****    都是在/system 下面,但是scanDirLI时  没有传SYSTEM_APP 的 parser_flag,所以系统不认为其为system_app ,这个app 的进程就无法访问/system 下的文件。

所以处理方法为,创建lib  和 dex 文件时,扫描的是直接为XXXX.apk 文件 ,而不是system/third_app/<PackageName>/ 这个目录,这样生成的lib 库 和 dex 文件 就不在/system 下 ,而是在/data 下

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章