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

歡迎訪問 生活随笔!

生活随笔

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

Android

【Android 安装包优化】开启资源压缩 ( 资源压缩配置 | 启用严格模式的资源引用检查 | 自定义保留/移除资源配置 | 资源压缩效果 )

發布時間:2025/6/17 Android 18 豆豆

文章目錄

  • 一、開啟資源壓縮
  • 二、啟用嚴格模式的資源引用檢查
  • 三、自定義保留/移除資源配置
  • 四、資源壓縮效果
  • 五、完整配置
    • 1、keep.xml 配置
    • 2、build.gradle 構建腳本
  • 六、參考資料





一、開啟資源壓縮



縮減、混淆處理和優化應用 ( 官方文檔 ) : https://developer.android.google.cn/studio/build/shrink-code


資源壓縮 的前提是 代碼壓縮 必須開啟 , 否則資源壓縮無效 ;

代碼壓縮就是 混淆操作 , 參考 【Android 安裝包優化】開啟 ProGuard 混淆 ( 壓縮 Shrink | 優化 Optimize | 混淆 Obfuscate | 預檢 | 混淆文件編寫 | 混淆前后對比 ) 博客 ;


編譯打包時 , 先進行代碼壓縮混淆 , 刪除不必要的代碼 ; 然后使用資源壓縮器移除不相關的資源 ; ( 先處理代碼 , 再處理資源 )


資源壓縮不是簡單的將資源刪除 , 而是將資源的文件保留 , 資源的實際內容替換掉 , 如 XML 文件資源 , 將其只保留一個根節點 ;


資源壓縮配置是在 build.gradle 構建腳本中的 " android / buildTypes " 下的 debug / release 下配置 shrinkResources true 選項 ;


資源壓縮 配置示例 :

android {buildTypes {debug {shrinkResources trueminifyEnabled trueproguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'}release {shrinkResources true minifyEnabled trueproguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'}} }



二、啟用嚴格模式的資源引用檢查



資源壓縮器 壓縮資源時 , 默認使用比較保守的模式 , 通過動態 id 獲取資源不會被移除 ;

動態 id 獲取資源 , 參考 【Android 安裝包優化】移除無用資源 ( 自動移除無用資源 | 直接引用資源 | 動態獲取資源 id | Lint 檢查資源 ) 二、直接引用資源與動態獲取資源 2、動態獲取資源 id 博客章節 ;


保守模式下進行資源壓縮 , 沒有任何效果 , 因此這里要啟用嚴格模式 ;


在 " res/raw " 目錄下創建 " keep.xml " 文件 , 文件內容如下 :

<?xml version="1.0" encoding="utf-8"?> <resources xmlns:tools="http://schemas.android.com/tools"tools:shrinkMode="strict" />

這樣就啟用了應用資源的嚴格壓縮模式 ;





三、自定義保留/移除資源配置



參考文檔 : 自定義要保留的資源


如果開發者有想要特定保留或者必須移除的資源 , 可以進行自定義配置 ;

在 " res/raw " 目錄下創建 " keep.xml " 文件中可以配置 保留 / 移除 的資源 ;

使用 tools:keep 屬性指定要保留的資源 ; 如果保留多個資源使用逗號隔開 ;

使用 tools:discard 屬性指定要移除的資源 ; 如果移除多個資源使用逗號隔開 ;

該設置支持 * 通配符 設置 ,


<?xml version="1.0" encoding="utf-8"?> <resources xmlns:tools="http://schemas.android.com/tools"tools:shrinkMode="strict"tools:keep="@layout/l_used*_c,@layout/l_used_a,@layout/l_used_b*"tools:discard="@layout/unused2" />



四、資源壓縮效果



啟動資源壓縮后 , 壓縮后的布局資源變成了如下內容 , 程序中沒有引用該資源 , 在編譯時 , 該資源自動替換成如下類型 ;


<?xml version="1.0" encoding="utf-8"?> <x />





五、完整配置





1、keep.xml 配置


res/raw/keep.xml 配置文件 :

<?xml version="1.0" encoding="utf-8"?> <resources xmlns:tools="http://schemas.android.com/tools"tools:shrinkMode="strict" />

2、build.gradle 構建腳本


plugins {id 'com.android.application'id 'kotlin-android' }android {compileSdkVersion 30buildToolsVersion "30.0.3"defaultConfig {applicationId "kim.hsl.svg"minSdkVersion 18targetSdkVersion 30versionCode 1versionName "1.0"testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"// 生成 PNG 圖片配置//generatedDensities = ['hdpi', 'mdpi', 'xhdpi', 'xxhdpi', 'xxxhdpi']// 使用 com.android.support:appcompat 支持庫配置vectorDrawables.useSupportLibrary = true// 國際化資源配置, 只打包默認資源與英文資源resConfigs 'en'}buildTypes {debug {// 開啟資源壓縮shrinkResources true// 開啟代碼壓縮minifyEnabled trueproguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'}release {// 開啟資源壓縮shrinkResources true// 開啟代碼壓縮minifyEnabled trueproguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'}}compileOptions {sourceCompatibility JavaVersion.VERSION_1_8targetCompatibility JavaVersion.VERSION_1_8}kotlinOptions {jvmTarget = '1.8'} }dependencies {implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"implementation 'androidx.core:core-ktx:1.3.2'// 矢量圖支持庫 , 支持 5.0 以下版本手機使用矢量圖 , 這個是創建應用時自帶的配置implementation 'androidx.appcompat:appcompat:1.2.0'implementation 'com.google.android.material:material:1.3.0'implementation 'androidx.constraintlayout:constraintlayout:2.0.4'testImplementation 'junit:junit:4.+'androidTestImplementation 'androidx.test.ext:junit:1.1.2'androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0' }



六、參考資料



參考官方文檔 :

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

參考之前的博客資源 :

  • 【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 安装包优化】开启资源压缩 ( 资源压缩配置 | 启用严格模式的资源引用检查 | 自定义保留/移除资源配置 | 资源压缩效果 )的全部內容,希望文章能夠幫你解決所遇到的問題。

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