Заставить Dexguard не удалять неиспользуемые ресурсы

Мне тяжело с dexguard, чтобы он не удалил ресурс, к которому у меня есть доступ таким образом:

int resourceId = getResources (). getIdentifier ("картинки", "массив", getActivity().getPackageName());

Когда я выполняю приложение, я получаю следующее исключение:

java.lang.RuntimeException: невозможно запустить действие android.content.res.Resources$NotFoundException: идентификатор ресурса массива #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) в java.lang.reflect.Method.invoke(собственный метод) в 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: идентификатор ресурса массива #0x0

Я использовал эти директивы в proguard-project.txt, извлеченном из некоторых связанных вопросов о переполнении стека, и ничего не решил:

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

-keep class **.R$*

Как я могу сказать dexguard не удалять этот ресурс?

Заранее спасибо.

1 ответ

Решение

После разговора с создателем dexguard кажется, что этого можно достичь, просто используя:

-keepresources array/pictures
-keepresources array/a_*

Надеюсь, что другие найдут это полезным

Приветствия.

Другие вопросы по тегам