安全模式下的资源缩减器行为不正常

时间:2017-10-27 15:19:46

标签: android android-gradle android-resources android-proguard

我目前正在根据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包

Screen shoot of project tree

在gradle我有

    release {
        minifyEnabled true
        shrinkResources true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }

工作应用的最终结果应如下所示:

Working app after keeping drawable

但如果我没有在我的keep.xml中设置工具:keep =“@ drawable / img_1”,那么我最终得到这个:

Bad behavior

我得到了这个效果,无论我使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)

任何人都可以告诉我为什么这不起作用......安全吗?我在这里做错了什么,或者它的工作方式不合适?

0 个答案:

没有答案