问题描述
在build中如果同时开启以下两个选项,那么打包时就会进行混淆并且会删除无用的资源文件。
// 代码混淆
minifyEnabled true
// 移除无用的resource文件
shrinkResources true
虽然删除无用资源能有助于较小apk大小,但是偶尔也会遇到一些问题。
比如用到一些第三方的东东,需要导入它的资源,但是在代码中又没有明确的引用这些资源,那么打包的时候就会删除这些资源文件,导致使用的时候会加载不到资源文件而出现异常报错。
解决方案
在项目的src/main/res目录下,添加raw/keep.xml文件,内容如下
<resources xmlns:tools="http://schemas.android.com/tools"
tools:keep="@drawable/yw_1222_*,@drawable/res_name" />
这里的@drawable/yw_1222_*和@drawable/res_name就是那些需要避免被删除的资源文件,多个资源文件之间用”,”符号分开。