一、几个关键目录
1、/data/local/tmp
/data/local/tmp 目录是转为android studio 安装应用程序保留的目录
android studio 安装apk时 首先将apk push 到/data/local/tmp目录下
rk3399_mid:/data/local/tmp # ls -la
total 416048
drwxrwx--x 3 shell shell 4096 2019-04-23 16:22 .
drwxr-x--x 5 root root 4096 2019-04-01 18:18 ..
-rw-r--r-- 1 system system 8649 2019-04-01 18:18 TranslatePodTest.jar
-rw-rw-rw- 1 root root 212739751 2019-04-23 16:22 com.sogou.teemo.translate.launcher
-rw-rw-rw- 1 root root 0 2019-04-23 16:22 com.sogou.teemo.translate.launcher-build-id.txt
drwxrwxrwx 3 shell shell 4096 2019-04-23 16:14 perfd
2、data/dalvik-cache 将apk中的dex文件安装到dalvik-cache目录下
3、data/data 存放应用程序的数据
4、system/app 系统自带的应用安装目录
二、apk的安装过程
1、将apk复制到/data/app/包名/ 下面,
如,翻译机的/data/app/com.sogou.teemo.translate.launcher 如下:
rk3399_mid:/data/app/com.sogou.teemo.translate.launcher # ls
base.apk lib oat
2、解压/data/app/package/base.apk中的so 到 /data/app/package/lib目录
Android 设备的CPU类型通常分以下几种
1.armeabiv-v7a: 第7代及以上的 ARM 处理器,目前主流版本,大部分Android设备都使用它。
2.arm64-v8a: 第8代、64位ARM处理器。
3.armeabi: 第5代、第6代的ARM处理器,早期的手机用的比较多,缺少对浮点数计算的硬件支持,在需要大量计算时有性能瓶颈。
4.x86 / x86_64: x86 架构的手机都会包含由 Intel 提供的称为 Houdini 的指令集动态转码工具,
实现对arm .so 的兼容。
5.mips/mips64:极少用于手机可忽略。
(1)arm设备上CPU 是armabi-v8a,ABI的优先级
-
如果手机CPU 是armabi-v8a 架构,优先选择拷贝armabi-v8a中的.so 到 /data/app/package/lib/arm64中。
-
如果不存在,则会选择拷贝armeabi-v7a中的.so文件 到/data/app/package/lib/arm文件夹中。
-
如果也不存在,则选择armeabi目录中的.so文件到/data/app/package/lib/arm中。
(2)arm设备上CPU 是armabi-v7a,ABI的优先级
- 如果手机CPU 是armabi-v7a,优先选择拷贝armabi-v7a中的.so文件到/data/app/package/lib/arm中。
- 如果不存在,则会选择armeabi中的.so文件到/data/app/package/lib/arm中。
以64位为app为例,/data/app/package/lib/arm64目录如下:
rk3399_mid:/data/app/com.sogou.teemo.translate.launcher-1/lib # ls
arm64
rk3399_mid:/data/app/com.sogou.teemo.translate.launcher-1/lib # ls arm64/
libBugly.so libOcrTFDetect.so libeval.so libmp3lame.so libspeex_sogou_v43.so libtrans.so
libJniModule.so libOcrUtil.so libgnustl_shared.so libopencv_java3.so libsqlcipher.so libweibosdkcore.so
libOcrMerge.so libctranslate.so libimagepipeline.so libsgfront.so libssasr.so
libOcrRecog.so libeval-lib.so libimageutil.so libsogouupdcore.so libteemoutil.so
2、解压apk,把其中的classes.dex 拷贝到data/dalvik-cache,命名规则是 apk路径+classes.dex。
3、在data/data/目录下创建对应的包名目录。该目录下创建存储应用数据的相关目录,例如cache, database、lib、shared_perfs等。
翻译机/data/data/com.sogou.teemo.translate.launcher 如下:
rk3399_mid:/data/data/com.sogou.teemo.translate.launcher # ls
app_bugly app_crashrecord cache code_cache databases files shared_prefs
网友评论