我目前正在根据android user guide了解资源缩减,并且我遇到了给定示例的错误行为:
String name = String.format("img_%1d", angle + 1);
res = getResources().getIdentifier(name, "drawable", getPackageName());
如果我做对了它应该留下每个drawable的名字以img_开头,但我做了我自己的测试,看起来像这样:
int postfix = 1;
String name2 = String.format("img_%1d", postfix);
int imageResId = getResources().getIdentifier(name2, "drawable", getPackageName());
imageView.setImageDrawable(getResources().getDrawable(imageResId));
我还将一些img_起始drawables放入drawables包
在gradle我有
release {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
工作应用的最终结果应如下所示:
但如果我没有在我的keep.xml中设置工具:keep =“@ drawable / img_1”,那么我最终得到这个:
我得到了这个效果,无论我使keep.xml安全(默认情况下它应该是安全的)或删除keep.xml。我也进入了我的resoutces.txt:
Skipped unused resource res/drawable/img_1.png: 2140 bytes (replaced with small dummy file of size 67 bytes)
任何人都可以告诉我为什么这不起作用......安全吗?我在这里做错了什么,或者它的工作方式不合适?