【筆記】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 下

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