Подтвердить что ты не робот

Запретить Proguard удалять определенные чертежи

В моем проекте Android у меня есть некоторые изображения, хранящиеся в res/drawable/которые доступны только из HTML файла, загруженного в Webview. Например (код в HTML):

<img src="file:///android_res/drawable/myfriend.png">

Эти изображения удаляются Proguard из apk во время оптимизации.

Кто-нибудь знает способ сохранить эти файлы (даже если они не используются непосредственно в Java-коде)?

4b9b3361

Ответ 1

Я переместил изображения в папку "assets", которая решила мою проблему:

<img src="file:///android_asset/myfriend.png">

Ответ 2

У меня была аналогичная проблема, и мне хотелось добавить только несколько бит.

Ресурсы НЕ удаляются ProGuard. Если вы просто разархивируете свой apk, вы увидите, что файлы изображений все еще существуют.

Проблема заключается в том, что Webkit FileLoader попытается загрузить ваш класс R $drawable, используя отражение. Если вы не добавите в файл proguard.cfg правило keep, этот класс будет переименован, поэтому Webkit не сможет загрузить ваш ресурс.

Поместив файл в папку с ресурсами, вы обходите систему класса R, и все будет работать.

Это не решение, хотя, например, если вы хотите использовать разные ресурсы для разных плотностей.

Я предлагаю вам просто добавить очень основное правило keep для сохранения R внутренних классов и полей:

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

-keep class **.R$*