2015-02-24 6 views
16

Ho configurato:avvertimento Proguard: la configurazione mantiene il punto di ingresso .... ma non il descrittore di classe

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

ma ancora ottenere l'avvertimento:

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' 

sto utilizzando Proguard versione 4.7 (in Android SDK)

Cosa devo fare?

+7

'-keep, includedescriptorclasses' –

+0

La soluzione di Muhammad ha funzionato per me. –

risposta

0

Dal docuemnts:

allowshrinking Specifica che i punti di ingresso specificati nell'opzione -keep possono essere ridotto, anche se devono essere conservate in altro modo. Cioè, i punti di ingresso possono essere rimossi in fase di contrazione, ma se sono necessarie, dopo tutto, essi non possono essere ottimizzate o offuscato

Così sembra che è necessario rimuovere il modificatore allowshrinking.

+0

L'ho già provato. non ha aiutato :( – user3398598

+0

Hai ricevuto un nuovo messaggio di errore? Hai provato una versione diversa di ProGuard? – Vaiden

0

Ho fatto un po 'di scavo nel docs. Non hai fornito l'intero file di configurazione, ma suppongo che questo com.trusteer.trf.dex_parser sia impostato per mantenere e non per offuscare.

Ciò significa che c'è un rifrazione da com.trusteer.trf.dex_parser in una classe denominata org.jf.dexlib2.dexbacked.DexBackedDexFile che è stata ristretta o offuscata. Ciò significa che il link è ora rotto - dex_parser non può importare DexBackedDexFile.

Pertanto, disabilitare il restringimento e l'offuscamento per DexBackedDexFile oppure consentire l'ottimizzazione e l'offuscamento su dex_parser.

18

Hai detto a Proguard di mantenere un certo metodo void foo(Bar bar); ma di offuscare la classe descrittore Bar.

Questo è solo un problema se si invoca il metodo da una fonte esterna in quanto la firma verrà modificata dall'offuscamento.

in modo da avere le seguenti scelte:

  • Configura Proguard per mantenere anche Bar.

  • Utilizzare la direttiva -dontnote per comunicare a Proguard di non stampare note come questa.