Android 安裝包優(yōu)化】資源混淆 ( AAPT2 資源編譯工具 | resources.arsc 資源映射表 工作機制 )

      網(wǎng)友投稿 1592 2022-05-29

      文章目錄

      一、AAPT2 資源編譯工具

      二、resources.arsc 資源映射表 工作機制

      三、參考資料

      一、AAPT2 資源編譯工具

      資源的編譯 , 生成 R.java 文件 , 都是通過 AAPT 工具生成的 ;

      AAPT2 工具官方文檔 : https://developer.android.google.cn/studio/command-line/aapt2?hl=zh_cn

      Java 文件是由 javac 工具編譯成 .class 字節(jié)碼文件 , 然后通過 dx 工具打包到 dex 文件中 ;

      清單文件 AndroidManifest.xml , Drawable XML 圖片資源 , 布局 XML 資源 , 都是由 AAPT2 工具將

      XML 文本文件

      編譯成

      二進制的資源文件

      , 并打包到 APK 安裝包 中 ;

      AAPT2 工作原理 :

      打包編譯 :

      assets 和 res/raw 目錄下的文件雖然不需要編譯 , 但是也會 被 AAPT2 工具 采集出來進行打包 ;

      清單文件 , XML 資源文件 , 會被 AAPT2 工具編譯成一個 " *.ap_ " 二進制文件 , 在 debug 模式下 , 在 " app\build\intermediates\processed_res\debug\out " 目錄下生成 " resources-debug.ap_ " 文件 ;

      res 目錄下的其它文件 , 根據(jù)文件類型不同 , 進行不同的處理 , 如壓縮 ;

      該 " resources-debug.ap_ " 文件是一個壓縮文件 , 可以使用 7-Zip 工具打開 ;

      生成資源 ID 并賦值給資源 :

      AAPT2 會對除 Assets 之外的其它資源 , 都生成一個對應的資源 ID , 該 ID 是一個 int 類型常量 , 占 4 4 4 字節(jié) ;

      這些生成的 ID 常量值 , 會存放在 resources.arsc 資源映射表 中 ,

      參考 【Android 安裝包優(yōu)化】資源打包配置 ( resources.arsc 資源映射表 | 配置國際化資源 ) 一、resources.arsc 資源映射表 博客章節(jié) ;

      二、resources.arsc 資源映射表 工作機制

      特別注意 AAPT2 工具編譯生成的 resources.arsc 資源映射表 , Android 應用中查找資源 , 就是根據(jù)該 resources.arsc 資源映射表 查找資源 ;

      resources.arsc 資源映射表 提供了

      資源 ID

      資源文件路徑

      之間的映射表 , 可以根據(jù)資源 ID 查詢到對應的資源文件 ;

      Android 應用中 , 調用 R.mipmap.ic_launcher 資源 , 假設 其對應的資源 ID 是 0x7f010000 , 對應的資源路徑是 res/mipmap/ic_launcher.png ;

      首先通過 ID R.mipmap.ic_launcher 到 resources.arsc 資源映射表 中查找對應的文件名稱 , 然后找到對應的路徑 ;

      Android 通過 AssetManager 獲取 assets 目錄中的資源 , 具體是通過文件名來查找資源的 ;

      Android 通過 Resources 獲取 res 目錄下的資源 , 通過資源 ID 查找資源 ; 傳遞一個 ID 給 Resources , Resources 根據(jù)該 ID , 從 resources.arsc 資源映射表 中獲取具體的資源文件名稱 , 路徑 ;

      三、參考資料

      【Android 安裝包優(yōu)化】資源混淆 ( AAPT2 資源編譯工具 | resources.arsc 資源映射表 工作機制 )

      參考官方文檔 :

      縮減、混淆處理和優(yōu)化應用 : https://developer.android.google.cn/studio/build/shrink-code

      APK 構建流程 : https://developer.android.google.cn/studio/build

      AAPT2 工具官方文檔 : https://developer.android.google.cn/studio/command-line/aapt2?hl=zh_cn

      參考之前的博客資源 :

      【Android 安全】DEX 加密 ( ProGuard 混淆 | -keepclassmembers 混淆效果 | -keepclasseswithmembernames 混淆效果 )

      【Android 安全】DEX 加密 ( Proguard 混淆 | 混淆后的報錯信息 | Proguard 混淆映射文件 mapping.txt )

      【Android 安全】DEX 加密 ( Proguard 混淆 | 將混淆后的報錯信息轉為原始報錯信息 | retrace.bat 命令執(zhí)行目錄 | 暴露更少信息 )

      【Android 安全】DEX 加密 ( Proguard 混淆 | 混淆后的報錯信息 | Proguard 混淆映射文件 mapping.txt )

      博客資源 :

      GitHub 項目源碼 : https://github.com/han1202012/SVG

      - :

      Android 網(wǎng)絡

      版權聲明:本文內容由網(wǎng)絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內刪除侵權內容。

      上一篇:Java 13 特性解讀
      下一篇:MongoDB創(chuàng)建數(shù)據(jù)庫
      相關文章
      午夜亚洲国产理论秋霞| 亚洲国产aⅴ成人精品无吗| 国产精品无码亚洲精品2021| 亚洲国产综合精品一区在线播放| 99热亚洲色精品国产88| 亚洲免费闲人蜜桃| 亚洲日韩乱码中文无码蜜桃| 亚洲视频日韩视频| 亚洲网红精品大秀在线观看| 国产亚洲精品久久久久秋霞| 亚洲午夜成人精品电影在线观看| 自拍偷区亚洲国内自拍| 亚洲日本久久久午夜精品| 亚洲看片无码在线视频| 亚洲午夜福利在线视频| 亚洲日韩精品无码专区加勒比☆| 亚洲精品午夜视频| 亚洲特级aaaaaa毛片| 亚洲女人初试黑人巨高清| 亚洲Av高清一区二区三区| 久久久久se色偷偷亚洲精品av| 亚洲av无码片在线观看| 学生妹亚洲一区二区| 亚洲丁香婷婷综合久久| 国产精品手机在线亚洲| 亚洲精品人成网线在线播放va | 亚洲色大成网站WWW国产| 亚洲最大福利视频| 亚洲精品无码专区久久| 国产成人亚洲精品播放器下载| 国产精品亚洲专区一区| 亚洲综合色在线观看亚洲| 亚洲美女又黄又爽在线观看| 亚洲成AV人片在线播放无码| 亚洲综合色一区二区三区小说| 亚洲免费电影网站| 亚洲国产成人久久精品大牛影视 | 久久丫精品国产亚洲av不卡 | 中文字幕精品无码亚洲字| 亚洲精品乱码久久久久久蜜桃不卡 | 亚洲性色AV日韩在线观看|