编译apk的时候遇到下面的问题:
Error:A problem was found with the configuration of task’:uhome_app:packageOfficialRelease’.
File ‘D:\segi_workspace\branches\uhome\uhome_huarun\joylife_v1.2.0\uhome_app\build\intermediates\res\resources-official-release-stripped.ap_’specified for property ‘resourceFile’ does not exist.
提示中的’resourceFile’ does not exist. 是重点。表示resourceFile不存在。
经过网上找资料发现问题 在 下图中红色框中的两个配置:
//是否进行代码压缩
minifyEnabled false
// 移除无用的resource文件
shrinkResources true
如上设置 minifyEnabled 为 false , shrinkResources 为 true 的时候会出现上面 ‘resourceFile’ does not exist.的错误。官方的文档给出了解释 :https://developer.android.com/studio/build/shrink-code?hl=zh-cn
解决的办法就是同时设为true
压缩资源
资源压缩只与代码压缩协同工作。代码压缩器移除所有未使用的代码后,资源压缩器便可确定应用仍然使用的资源。这在您添加包含资源的代码库时体现得尤为明显 - 您必须移除未使用的库代码,使库资源变为未引用资源,才能通过资源压缩器将它们移除。
要启用资源压缩,请在 build.gradle 文件中将 shrinkResources 属性设置为 true(在用于代码压缩的 minifyEnabled 旁边)。例如:
android {
...
buildTypes {
release {
shrinkResources true
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'),
'proguard-rules.pro'
}
}
}
如果您尚未使用代码压缩用途的 minifyEnabled 构建应用,请先尝试使用它,然后再启用 shrinkResources,因为您可能需要编辑 proguard-rules.pro 文件以保留动态创建或调用的类或方法,然后再开始移除资源。
注:资源压缩器目前不会移除 values/ 文件夹中定义的资源(例如字符串、尺寸、样式和颜色)。这是因为 Android 资源打包工具
(AAPT) 不允许 Gradle 插件为资源指定预定义版本。