web-dev-qa-db-fra.com

avertissement proguard: la configuration conserve le point d’entrée .... mais pas la classe de descripteur

J'ai configuré:

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

mais toujours avoir l'avertissement:

 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'

J'utilise proguard version 4.7 (dans le SDK Android)

Que devrais-je faire?

25
user3398598

Vous avez dit à Proguard de garder une certaine méthode void foo(Bar bar); mais de masquer la classe de descripteurs Bar.

Ce n'est un problème que si vous appelez la méthode depuis une source externe, car la signature sera modifiée par l'obscurcissement (si vous utilisez Proguard pour obscurcir une bibliothèque puis l'utiliser dans une autre application).

Alors, ayez les choix suivants:

  • Configurez Proguard pour conserver également Bar.

  • Utilisez la directive -dontnote pour indiquer à Proguard de ne pas imprimer de telles notes.

30
William

Remarque: la configuration conserve le point d'entrée "...", mais pas la classe de descripteur "...". Votre configuration contient une option -keep pour conserver la méthode (ou le champ) donnée (e), la classe donnée qui est un type d'argument ou un type de retour dans le descripteur de la méthode. Vous voudrez peut-être aussi garder la classe. Sinon, ProGuard dissimulera son nom, modifiant ainsi la signature de la méthode. Le procédé peut alors devenir introuvable en tant que point d’entrée, par ex. s'il fait partie d'une API publique. Vous pouvez automatiquement conserver ces classes de descripteur avec le modificateur d'option -keep includedescriptorclasses (-keep, includedescriptorclasses ...). Vous pouvez désactiver ces notes en spécifiant l'option -dontnote.

3
柏渊谢

Des docuemnts :

allowhrinking Spécifie que les points d'entrée spécifiés dans le paramètre -keep Cette option peut être réduite, même si elles doivent être conservées sinon . C'est-à-dire que les points d'entrée peuvent être supprimés lors de la réduction, mais si ils sont nécessaires après tout, ils ne peuvent pas être optimisés ou obscurcis

Il semble donc que vous deviez supprimer le modificateur allowshrinking.

0
Vaiden

Ajoutez cette ligne dans votre fichier 'proguard-rules.pro' pour résoudre ce problème.

-ignorewarnings
0
Sanche