proguard attention: la configuration maintient le point d'entrée...mais pas le descripteur de classe
J'ai configuré:
-keep ,allowoptimization,allowobfuscation,allowshrinking public class org.jf.dexlib2.dexbacked.** {
*;
}
mais encore obtenir 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'
Je suis à l'aide de proguard la version 4.7 (Android SDK)
Que dois-je faire?
-keep, includedescriptorclasses
- Mohammed solution a fonctionné pour moi.
Vous devez vous connecter pour publier un commentaire.
Vous avez dit Proguard afin de garder une certaine méthode
void foo(Bar bar);
mais pour obscurcir le descripteur de classeBar
.C'est seulement un problème si vous allez invoquer la méthode à partir d'une source externe comme la signature sera changé par l'obscurcissement (si vous utilisez Proguard à obscurcir d'une bibliothèque et d'utiliser ensuite cette bibliothèque dans une autre application).
Les choix suivants:
Configurer Proguard de garder
Bar
.Utiliser le
-dontnote
directive dire Proguard de ne pas imprimer des notes de ce genre.Remarque: la configuration maintient le point d'entrée '...', mais pas le descripteur de la classe de...'
Votre configuration contient un -conserver l'option de conserver la méthode donnée (ou le domaine), mais sans conserver l'option pour la classe donnée qui est un type d'argument ou le type de retour de la méthode descripteur. Vous pouvez ensuite garder la classe aussi. Sinon, ProGuard permettra de dissimuler son nom, et donc de changer la signature de la méthode. La méthode pourrait alors devenir introuvables comme un point d'entrée, par exemple, s'il fait partie d'une API publique. Vous pouvez conserver automatiquement un tel descripteur de classes avec l'-garder la touche option includedescriptorclasses (-garder,includedescriptorclasses ...). Vous pouvez désactiver ces notes en spécifiant le -dontnote option.
Ajouter cette ligne dans votre " proguard-règles.pro' fichier pour corriger ce problème .
De la docuemnts:
Il semble donc que vous avez besoin pour retirer le
allowshrinking
modificateur.Dans mon cas, ce problème apparaît lorsque je ajouter à construire.gradle
Instructions officielles: https://flutter.dev/docs/deployment/android
Bug https://github.com/flutter/flutter/issues/19250
Échantillon proguard-règles.pro fichier:
J'ai fait quelques recherches dans le docs. Vous n'avez pas fourni la totalité de votre fichier de configuration, mais je devine que
com.trusteer.trf.dex_parser
est définie à la fois à garder et ne pas occulter.Cela signifie qu'il y a une refrence de
com.trusteer.trf.dex_parser
à une classe appeléeorg.jf.dexlib2.dexbacked.DexBackedDexFile
qui était soit diminué ou d'obfuscation. Cela signifie que le lien est rompu -dex_parser
ne pouvez pas importer desDexBackedDexFile
.Donc, soit désactiver le rétrécissement et de l'obscurcissement de
DexBackedDexFile
, ou d'en permettre l'optimisation et de l'obscurcissement surdex_parser
.