2015-02-24 20 views
16

mam skonfigurowane:PROGUARD ostrzeżenie: konfiguracja utrzymuje punkt wejścia .... ale nie deskryptor klasy

-keep ,allowoptimization,allowobfuscation,allowshrinking public class  org.jf.dexlib2.dexbacked.** { 
    *; 
} 

ale wciąż otrzymuję ostrzeżenie:

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' 

Używam ProGuard wersja 4.7 (w systemie Android SDK)

Co mam zrobić?

+7

'-keep, includedescriptorclasses' –

+0

Rozwiązanie Muhammada działało dla mnie. –

Odpowiedz

0

Z docuemnts:

allowshrinking Określa, że ​​punkty wejścia określone w -Trzymaj opcją może być skurczył, nawet jeśli muszą być zakonserwowane inaczej. Oznacza to, że punkty wejścia mogą być usunięte w etapie kurczenia, ale jeśli są niezbędne po wszystkim, nie mogą być optymalizowane lub ukrywane

Wygląda więc na to, że trzeba usunąć modyfikator allowshrinking.

+0

Próbowałem już tego. nie pomogło :( – user3398598

+0

Otrzymujesz nowy komunikat o błędzie? Czy próbowałeś innej wersji ProGuard? – Vaiden

0

Zrobiłem trochę kopania w docs. Nie dostarczyłeś całego pliku konfiguracyjnego, ale domyślam się, że ten com.trusteer.trf.dex_parser jest ustawiony zarówno na zachowanie, jak i na zaciemnianie.

Oznacza to, że istnieje odwołanie od com.trusteer.trf.dex_parser do klasy o nazwie org.jf.dexlib2.dexbacked.DexBackedDexFile, która została skurczona lub zaciemniona. Oznacza to, że link jest teraz uszkodzony - dex_parser nie można zaimportować DexBackedDexFile.

Więc albo wyłącz kurczenie i zaciemnianie dla DexBackedDexFile, albo zezwalaj na optymalizację i zaciemnianie na dex_parser.

18

Poinformowałeś Proguard, aby zachował określoną metodę void foo(Bar bar);, ale aby zaciemnić klasę deskryptorów: Bar.

To tylko problem, jeśli zamierzasz wywołać metodę z zewnętrznego źródła, ponieważ podpis zostanie zmieniony przez zaciemnienie.

Więc mają następujące możliwości:

  • Konfiguruj PROGUARD również zachować Bar.

  • Użyj dyrektywy -dontnote, aby poinformować Proguard, że nie będzie drukować takich notatek.

Powiązane problemy