Когда я использую правило защиты pro-guard по умолчанию в папке инструментов Android SDK, я получаю ошибку для ScreenDensity
. Что такое правило защиты, чтобы сохранить это StringDef
ScreenDensity
от получения запутанных?Что такое правило защиты для аннотации StringDef в android?
ответ
Попробуйте добавить это правило Proguard:
-keepclassmembers class ** {
@your.package.AssetsHelper.ScreenDensity public *;
}
Это то, что сработало для меня класс -keepclassmembers ** { @ com.citruspay. graphics.AssetsHelper.ScreenDensity public *; } ' –
Я также добавил аннотацию @Keep для класса, а также поля. –
Чтобы исправить ошибки и заставить ProGuard поддерживать определенный код, добавьте в файл конфигурации ProGuard строку -keep. Например:
-keep public class MyClass
В качестве альтернативы, вы можете добавить @Keep аннотацию код, который вы хотите сохранить. Добавление @Keep в класс сохраняет весь класс как есть. Добавление этого метода или поля будет поддерживать метод/поле (и его имя), а также имя класса неповрежденным. Обратите внимание, что эта аннотация доступна только при использовании библиотеки поддержки аннотаций.
Проверить proguard
Я пробовал, чтобы ваше решение не работало. :( –
StringDef
является Источник аннотации политики хранения. Поэтому он будет автоматически отключен в скомпилированном коде.
Исходные аннотации предназначены для применения правил промпрограммистов для использования конкретных константов вместо «магических» чисел или строк, что ничего не значит для кого-то, незнакомого с кодом.
Мой код отлично работает в режиме отладки, когда не применяется правило защиты. Поэтому я думаю, что он тоже должен работать в режиме деблокирования. –
Сначала вы должны прочитать о 'RetentionPolicy.SOURCE', а затем беспокоиться о Proguard –
@BartekLipinski - Я пытался RetentionPolicy.CLASS, но получаю ту же ошибку. Любая идея, что может быть неправильным? –
Можете ли вы отправить сообщение об ошибке? –