Предупреждение proguard: конфигурация сохраняет точку входа.... но не класс дескриптора
Я настроил:
-keep ,allowoptimization,allowobfuscation,allowshrinking public class org.jf.dexlib2.dexbacked.** {
*;
}
но все еще получая предупреждение:
Note: the configuration keeps the entry point 'com.trusteer.trf.dex_parser { int get_strings_count(org.jf.dexlib2.dexbacked.DexBackedDexFile); }', but not the descriptor class 'org.jf.dexlib2.dexbacked.DexBackedDexFile'
Я использую proguard версии 4.7 (в Android SDK)
Что мне делать?
Ответы
Ответ 1
Вы сказали Proguard о сохранении определенного метода void foo(Bar bar);
, но для обфускации класса дескриптора Bar
.
Это только проблема, если вы собираетесь вызывать метод из внешнего источника, поскольку подпись будет изменена путем обфускации.
Итак, у вас есть следующие варианты:
-
Настройте Proguard, чтобы сохранить Bar
.
-
Используйте директиву -dontnote
, чтобы сообщить Proguard не печатать такие заметки.
Ответ 2
Из documentemnts:
allowhrinking Указывает, что точки входа, указанные в -keep вариант может быть сокращен, даже если они должны быть сохранены в противном случае. То есть точки входа могут быть удалены на этапе усадки, но если они необходимы в конце концов, они не могут быть оптимизированы или запутаны
Итак, вам нужно удалить модификатор allowshrinking
.
Ответ 3
Я проделал кое-какие операции в docs. Вы не представили весь свой файл конфигурации, но я предполагаю, что этот com.trusteer.trf.dex_parser
установлен как для хранения, так и для не запутывания.
Это означает, что существует рефрен от com.trusteer.trf.dex_parser
до класса с именем org.jf.dexlib2.dexbacked.DexBackedDexFile
, который был либо сжат, либо обфускации. Это означает, что ссылка теперь сломана - dex_parser
не может импортировать DexBackedDexFile
.
Так что либо отключите сжатие и обфускацию для DexBackedDexFile
, либо разрешите оптимизацию и обфускацию на dex_parser
.