0326-安卓apk應(yīng)用/root權(quán)限

來(lái)自http://4ch12dy.site/2019/08/01/android-apk-install-process/android-apk-install-process/#an-zhuang-guo-cheng-xiao-jie

來(lái)自:https://zhuanlan.zhihu.com/p/79973102

我們知道,Windows應(yīng)用程序的安裝包是一個(gè)可執(zhí)行的壓縮包,安裝的過(guò)程是把壓縮包中的數(shù)據(jù)和依賴庫(kù)拷貝到安裝目錄,再在桌面或啟動(dòng)欄創(chuàng)建快捷方式,那么安卓的APK安裝過(guò)程是不是也是這樣的呢

apk:

APK包是個(gè)簡(jiǎn)單的壓縮包,可以用zip工具直接解壓它

一個(gè)APK包含以下這些文件:

  • META-INF目錄:包含兩個(gè)簽名文件(CERT.SF和CERT.RSA),以及一個(gè)manifest文件(MANIFEST.MF)
  • assets目錄:包含工程中的asset目錄下的文件,可以使用AssetManager獲取
  • res目錄:包含那些沒(méi)有被編譯到resources.arsc的資源
  • lib目錄:包含適用于不同處理器的第三方依賴庫(kù),這里邊可以有多個(gè)子目錄,比如armeabi, armeabi-v7a, arm64-v8a, x86, x86_64, 以及mips
  • resources.arsc文件:存儲(chǔ)編譯好的資源,包括項(xiàng)目工程中的res/values目錄里的xml文件,它們都被編譯成二進(jìn)制格式,也包括一些路徑,指向那些沒(méi)有被編譯的資源,比如layout文件和圖片
  • classes.dex文件:項(xiàng)目中的java類(lèi)都被編譯到該dex文件,這個(gè)文件可以被Android的Dalvik/ART虛擬機(jī)解析。
  • AndroidManifest.xml:二進(jìn)制格式的manifest文件,這個(gè)文件是必須的。
    這些文件是Android系統(tǒng)運(yùn)行一個(gè)應(yīng)用程序時(shí)會(huì)用到的數(shù)據(jù)和代碼,

安裝過(guò)程

  1. 與應(yīng)用相關(guān)的一些目錄

/system/priv-app:系統(tǒng)應(yīng)用安裝路徑,Android 4.4+ 開(kāi)始出現(xiàn),區(qū)分系統(tǒng)應(yīng)用權(quán)限,擁有 SignatureOrSystem 權(quán)限,此目錄下的 service 具有?;钅芰?br> /system/app:系統(tǒng)應(yīng)用安裝路徑,權(quán)限略低于 priv-app 目錄下的應(yīng)用,放置比如廠商內(nèi)置應(yīng)用
/data/app:用戶應(yīng)用安裝路徑,應(yīng)用安裝時(shí)將 apk 復(fù)制到此目錄下
/data/data:用戶應(yīng)用數(shù)據(jù)存放路徑,存在沙箱隔離
/data/dalvik-cache:存放應(yīng)用的dex 文件
/data/system:存放應(yīng)用安裝相關(guān)文件

packages.xml 是一個(gè)應(yīng)用的注冊(cè)表,在解析應(yīng)用時(shí)創(chuàng)建,有變化時(shí)更新,記錄系統(tǒng)權(quán)限,各應(yīng)用信息,如name, codePath, flag, version, userid,下次開(kāi)機(jī)時(shí)直接讀取并添加到內(nèi)存列表
package.list 指定應(yīng)用的默認(rèn)存儲(chǔ)位置,userid 等

  1. 應(yīng)用安裝過(guò)程總結(jié)

將應(yīng)用 apk 拷貝到指定目錄下
解壓 apk,將 dex 文件拷貝到 /data/dalvik-cache 目錄,創(chuàng)建 /data/data/ 數(shù)據(jù)目錄
解析 AndroidManifest.xml 及其他資源文件,提取應(yīng)用包信息,注冊(cè)到 packags.xml 中
由 Launcher 進(jìn)程通過(guò) PMS 取出所有應(yīng)用程序,展示在桌面上

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容