基于Android 8 :
1.非系统自带应用:
1.安装在“/data/app”下
msm8909go_benz:/data/app # ls
ls
cn.wps.moffice_eng-1qckU7E2l4V8BTnsA8SWEw==
com.estrongs.android.pop-ZntFcOxK4pSp0Y7oOjMKyg==
com.iflytek.inputmethod-EB4XgZbqrmhghL7NKGFuBg==
2.安装目录下:
127|msm8909go_benz:/data/app/com.estrongs.android.pop-ZntFcOxK4pSp0Y7oOjMKyg== # ls
total 14922
-rw-r--r-- 1 system system 15257467 2007-11-07 05:03 base.apk
drwxr-xr-x 3 system system 3488 2007-11-07 05:03 lib
drwxrwx--x 3 system install 3488 2007-11-07 05:03 oat
1.base.apk 直接COPY 到此路径的原APK 文件,改名为 “base.apk”
2.解压的lib库文件 “/data/app/com.<pkgname>.android.XXXXX/lib/arm/libXXX.so”
3.odex 和 vdex 文件 “/data/app/com.<pkgname>.android.XXXXX/oat/arm/base.odex” 和 “/data/app/com.<pkgname>.android.XXXXX/oat/arm/base.vdex”
1.2.如何让一个非系统预支应用不可卸载
将应用apk源文件push 到/system/app 或者/system/priv-app 文件夹下,重启手机,PKMS扫描/system/app 和 /system/priv-app文件夹时会将此apk 当做系统预置应用处理。
1.2.1 例子:
1. 将ES文件浏览器apk源文件push 到/system/priv-app下
2.重启
ES.apk 自动加载
我们现在dumpsys package com.estrongs.android.pop :
... ... ...
Dexopt state:
[com.estrongs.android.pop]
path: /system/priv-app/com.estrongs.android.pop_10006.apk
arm: /data/dalvik-cache/arm/system@priv-app@com.estrongs.android.pop_10006.apk@classes.dex[status=kOatUpToDate, co
mpilation_filter=verify]
... ... ...
比较一下原来就在/system/app 下的bluetooth.apk
Dexopt state:
[com.android.bluetooth]
path: /system/app/Bluetooth/Bluetooth.apk
arm: /system/app/Bluetooth/oat/arm/Bluetooth.odex[status=kOatUpToDate, compilation_filter=quicken]
used by other apps: [org.codeaurora.bluetooth]
1.pkg_path 就是/system/priv-app
2.pkg_arm 则是在/data/dalvik-cache/arm/ 下(原生的就直接生成在/system/app/oat/arm/... ... 且同时在/data/dalvik-cache/arm/也有生成dex,vdex等)