日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

【Android 安装包优化】资源混淆 ( AAPT2 资源编译工具 | resources.arsc 资源映射表 工作机制 )

發布時間:2025/6/17 Android 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Android 安装包优化】资源混淆 ( AAPT2 资源编译工具 | resources.arsc 资源映射表 工作机制 ) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 一、AAPT2 資源編譯工具
  • 二、resources.arsc 資源映射表 工作機制
  • 三、參考資料





一、AAPT2 資源編譯工具



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

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


Java 文件是由 javac 工具編譯成 .class 字節碼文件 , 然后通過 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 目錄下的其它文件 , 根據文件類型不同 , 進行不同的處理 , 如壓縮 ;

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


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

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

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

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





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



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

resources.arsc 資源映射表 提供了 資源 ID 資源文件路徑 之間的映射表 , 可以根據資源 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 根據該 ID , 從 resources.arsc 資源映射表 中獲取具體的資源文件名稱 , 路徑 ;





三、參考資料



參考官方文檔 :

  • 縮減、混淆處理和優化應用 : 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 命令執行目錄 | 暴露更少信息 )
  • 【Android 安全】DEX 加密 ( Proguard 混淆 | 混淆后的報錯信息 | Proguard 混淆映射文件 mapping.txt )

博客資源 :

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

  • 下載地址 :

總結

以上是生活随笔為你收集整理的【Android 安装包优化】资源混淆 ( AAPT2 资源编译工具 | resources.arsc 资源映射表 工作机制 )的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。