使Dexguard不会删除未使用的资源

时间:2015-07-09 07:26:03

标签: java android proguard dexguard

我很难使用dexguard来删除我以这种方式访问​​的资源:

  

int resourceId = getResources()。getIdentifier(" pictures"," array",getActivity()。getPackageName());

当我执行应用程序时,我得到以下异常:

  

java.lang.RuntimeException:无法启动活动   android.content.res.Resources $ NotFoundException:数组资源ID#0x0               在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2325)               在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)               在android.app.ActivityThread.access $ 800(ActivityThread.java:151)               在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1303)               在android.os.Handler.dispatchMessage(Handler.java:102)               在android.os.Looper.loop(Looper.java:135)               在android.app.ActivityThread.main(ActivityThread.java:5254)               at java.lang.reflect.Method.invoke(Native Method)               在java.lang.reflect.Method.invoke(Method.java:372)               在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:903)               在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)        引起:android.content.res.Resources $ NotFoundException:数组资源ID#0x0

我在proguard-project.txt中使用了这个指令,从堆栈溢出的一些相关问题中提取并解决了一切:

-keepclassmembers class **.R$* {
    public static <fields>;
}

-keep class **.R$*

如何告诉dexguard不要删除此资源?

提前致谢。

1 个答案:

答案 0 :(得分:2)

在与dexguard创建者交谈后,似乎可以通过使用:

来实现
-keepresources array/pictures
-keepresources array/a_*

希望其他人能找到这个有用的

干杯。