Donc, j'ESSAYE de sortir un logiciel mais Proguard me donne mal à la tête.
Lorsque j'essaie d'exporter avec proguard, je reçois beaucoup d'avertissement, c'est-à-dire "impossible de trouver la classe référencée"
Par exemple:
[2011-08-07 17:44:37 - GAME] Warning: org.simpleframework.xml.stream.StreamReader: can't find referenced class javax.xml.stream.events.XMLEvent
[2011-08-07 17:44:37 - GAME] Warning: there were 52 unresolved references to classes or interfaces.
[2011-08-07 17:44:37 - GAME] You may need to specify additional library jars (using '-libraryjars'),
[2011-08-07 17:44:37 - GAME] or perhaps the '-dontskipnonpubliclibraryclasses' option.
[2011-08-07 17:44:37 - GAME] java.io.IOException: Please correct the above warnings first.
[
Les avertissements semblent liés à simpleframework, donc dans mon fichier de configuration proguard, j'ai ajouté ce qui suit:
-libraryjars pathtoprojecttolibs\simple-xml-2.4.jar
Où pathtoprojecttolibs
est le chemin vers les fichiers JAR référencés par mon projet.
Cela ne fait AUCUNE différence.
Si simpleframework fait référence à javax, puis-je dire à proguard d'ignorer cela aussi?
Des idées?
Réponses:
org.simpleframework.xml.stream.StreamReader
dans votre code fait référence àjavax.xml.stream.events.XMLEvent
. Cette dernière classe fait partie du runtime Java (rt.jar
) mais ne fait pas partie du runtime Android (android.jar
), donc ProGuard avertit que quelque chose pourrait être cassé. Si vous êtes sûr que votre application fonctionne malgré tout, vous pouvez spécifierL'enfer ProGuard?
la source
-dontwarn javax.xml.**
-libraryjars <java.home>/lib/rt.jar
résolu le problème pour moi.-dontwarn javax.xml.stream.**
-dontwarn
chanter l'interface graphique?Dans mon cas, la cause profonde était là . Ces avertissements que vous pouvez simplement ignorer:
La réponse originale est ici
la source
Cette erreur se produit car les bibliothèques que vous utilisez dépendent d'autres bibliothèques qui ne sont pas réellement utilisées, mais Proguard les recherche.
Ajoutez vos lignes -dontwarn à votre fichier proguard-rules.pro dans votre projet Android pour désactiver ces avertissements.
Vous pouvez trouver les dépendances que vous devez ajouter à votre proguard-rules.pro dans le stacktrace de votre erreur.
la source
Vous devez l'inclure dans votre configuration Proguard:
la source
Ma clé magique qui a résolu mes heures de recherche: ajoutez ceci à progruard-android.txt
la source
Hmm. En lisant cet avertissement, il semblerait que la bibliothèque que vous essayez d'utiliser dépende de javax.xml.stream.events. Je ne pense pas du tout que l'espace de noms soit inclus dans Android. (Voir l' index des packages ).
Essayez de le déployer sur l'émulateur sans utiliser proguard et voyez s'il fonctionne. Je suppose que non si cet avertissement est exact.
la source
Je pense que c'est un cas limite, mais dans mon cas, j'ai dû effacer complètement le dossier de construction de mon proguard Jenkins pour essayer de travailler avec un ancien code qui n'était plus là - juste au cas où quelqu'un aurait le même problème.
la source
Dans mon cas, je n'ai rien changé et l'avertissement a commencé à apparaître. Le problème était avec les caches de gradle cassés. Vérifiez mon autre réponse . Je partage avec ça car il m'a fallu 2 heures pour trouver le problème:]
la source
Ajoutez cette ligne à votre
proguard-rules.pro
fichier dans le répertoire des scripts gradle:où
package.class.name
est le nom du package avec le nom de classe du fichier jar ajouté.Par exemple:
la source