2015-02-24 12 views
16

ich konfiguriert haben:proguard Warnung: die Konfiguration hält den Einstiegspunkt .... aber nicht die Descriptor-Klasse

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

aber immer noch die Warnung erhalten:

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' 

Ich bin mit proguard Version 4.7 (in Android SDK)

Was soll ich tun?

+7

'-halten, includedescriptorclasses' –

+0

Muhammads Lösung funktionierte für mich. –

Antwort

0

Vom docuemnts:

allowshrinking Gibt an, dass die Eintrittspunkte in der -keep Option angegeben, verkleinert werden kann, auch wenn sie anders konserviert werden müssen. Das heißt, können die Eintrittspunkte in dem Schrumpfungsschritt entfernt werden, aber wenn sie doch notwendig sind, sie oder

So erscheint verschleiert nicht optimiert werden kann, dass Sie den allowshrinking Modifikator entfernen müssen.

+0

Ich habe das schon probiert. hat nicht geholfen :( – user3398598

+0

Erhalten Sie eine neue Fehlermeldung? Haben Sie eine andere Version von ProGuard versucht? – Vaiden

0

Ich habe etwas graben in der docs. Sie haben nicht Ihre gesamte Konfigurationsdatei angegeben, aber ich nehme an, dass com.trusteer.trf.dex_parser so eingestellt ist, dass sie sowohl beibehalten als auch nicht verschleiert wird.

Dies bedeutet, dass es eine Referenz von com.trusteer.trf.dex_parser zu einer Klasse namens org.jf.dexlib2.dexbacked.DexBackedDexFile gibt, die entweder geschrumpft oder verschleiert wurde. Dies bedeutet, dass die Verbindung jetzt unterbrochen ist - dex_parser kann DexBackedDexFile nicht importieren.

Deaktivieren Sie entweder Schrumpfung und Verschleierung für DexBackedDexFile, oder ermöglichen Sie Optimierung und Verschleierung unter dex_parser.

18

Sie haben Proguard angewiesen, eine bestimmte Methode void foo(Bar bar); beizubehalten, aber die Deskriptorklasse Bar zu verschleiern.

Dies ist nur ein Problem, wenn Sie die Methode von einer externen Quelle aufrufen, da die Signatur durch die Verschleierung geändert wird.

So haben folgende Möglichkeiten:

  • konfigurieren Proguard auch Bar zu halten.

  • Verwenden Sie die Anweisung -dontnote, um Proguard mitzuteilen, keine Notizen wie diese zu drucken.