Android apk 安裝相關的幾個目錄

一、幾個關鍵目錄

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 
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容