android studio getResources().getIdentifier return 0 如果应用 dexguard

android studio getResources().getIdentifier return 0 if apply dexguard

我在应用程序中使用了 dexguard。我正在动态加载图像并在图像视图中显示。但图像视图显示空白。我正在使用以下代码。

 getResources().getIdentifier(imagename, "drawable", packageName);

当我为我的项目使用 dexguard 1.7.0.02 时它返回 0(启用收缩并禁用混淆并针对调试构建进行优化)。如果我删除 dexguard 和 运行 项目,它工作正常并显示正确的图像。

注意:与 dexguard 在 eclipse 中的同一个项目,上面的代码工作正常。我只在 Android Studio 中遇到过这个问题。

我自己找到了解决方案。 dexguard 7.0 收缩资源(对于未使用的)如果你在 android studio.but 中应用收缩,当我来到 Dexguard 6.0 时,它不会收缩资源(我在 eclipse 项目中观察到)。所以我Dexguard 7.0 配置的托管资源如下所示

  -keepresourcefiles res/drawable/**
  -keepresources drawable/**