Home Articles

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

Asked
Viewed 1455 times
2

我正在努力使用dexguard使其不删除我以这种方式访问的资源:

int resourceId = getResources() . getIdentifier(“pictures”,“array”,getActivity() . getPackageName());

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

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

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

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

-keep class **.R$*

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

提前致谢 .

1 Answer

  • 2

    在与dexguard创建者交谈后,似乎只需使用以下方法即可实现:

    -keepresources array/pictures
    -keepresources array/a_*
    

    希望别人会发现这个有用的

    干杯 .

Related