迁移compileSDKVersion至30后APK含SDK资源体积增大的解决办法
解决APK包含未引用Android SDK资源的问题
方案1:启用资源收缩(Resource Shrinker)
在Module级的build.gradle中开启资源收缩,配合代码混淆能最大化移除冗余资源:
android { buildTypes { release { minifyEnabled true shrinkResources true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } debug { // 调试阶段也可开启,提前验证效果 shrinkResources true minifyEnabled false } } }
如果有必须保留的特定资源,可在res/raw/keep.xml中声明,避免被误删
方案2:指定仅保留所需资源配置
通过resConfigs配置,仅打包应用实际需要的资源类型(比如指定语言、屏幕密度),直接排除SDK中其他冗余资源:
android { defaultConfig { // 示例:仅保留中文资源 resConfigs "zh" // 如需限制屏幕密度,可追加配置,比如仅保留xxhdpi // resConfigs "xxhdpi" } }
方案3:排查并清理冗余依赖
部分第三方依赖可能间接引入SDK冗余资源,可通过命令./gradlew app:dependencies查看依赖树,对不必要的依赖模块进行排除:
dependencies { implementation('com.example:some-library:1.0.0') { exclude group: 'com.android.support', module: 'support-v4' } }
验证方法
用Android Studio的APK Analyzer打开打包后的APK,查看资源目录,确认未引用的SDK资源已被移除,验证配置效果。
内容的提问来源于stack exchange,提问作者Shirisha Reddy
相关产品推荐
相关产品推荐

