Comment puis-je forcer le Proguard garder mon .xml fichier de ressources?
Je suis avec succès en utilisant proguard pour mes applications Android.
Cependant, avec une application que je vais avoir des ennuis.
Cette application utilise une bibliothèque java qui a un .xml
fichier qui est stocké dans l'emballage.
InputStream istream = Library.class.getResourceAsStream("resource.xml");
Cette bibliothèque fonctionne très bien quand proguard est désactivé. Toutefois, l'exécution de proguard, il semble que le fichier xml est juste complètement dépouillé.
Pertinentes proguard.cfg
-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
#-dontobfuscate
#-repackageclasses '' //THIS IS DISABLED
-keepattributes *Annotation*
-keepattributes Signature
-verbose
-dontwarn roboguice.activity.RoboMapActivity
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
Des idées sur la façon de garder ce fichier xml?
InformationsquelleAutor Peterdk | 2011-05-01
Vous devez vous connecter pour publier un commentaire.
Tout d'abord, Il s'est avéré que l'utilisation de ant et mon build.xml le script n'a pas procédé de la .xml fichier de ressources à tous. Vous aurez besoin d'ajouter manuellement une copie d'action pour la build.xml pour les fichiers de ressources à copier à la sortie dir.
Encore, ayant résolu que, proguard foiré mon travail. La Solution était:
Cela fait en sorte que l' .fichier xml peut être trouvé par l'appel de la
Library.class.getResource
.Vous devriez ajouter un nouveau fichier keep.xml en vertu de res/raw.
Des outils:à conserver, à vous la liste des mises en page que vous souhaitez conserver. Vous pouvez même garder specefic un drawable si vous utilisez de la réflexion dans votre code pour obtenir votre drawable
Je préfère ajouter
tools:shrinkMode="strict"
alors que je fais sur aucune ressource n'est éliminé à moins qu'il n'est pas utilisé pour vous. Vous voudrez peut-être avoir un coup d'oeil à ce lien Réduire votre code.N'Oubliez pas d'ajouter ces lignes à votre proguard règles:
-keepattributes InnerClasses
-keep class **.R
-keep class **.R$* {
<fields>;
}
Vous devez stocker des fichiers dans la
/res/xml
,/res/assets
, ou/res/raw
dossier et y accéder via le système de gestion des ressources ou le gestionnaire d'actifs en conséquence. Vous pouvez lire plus au sujet de la fourniture de ressources en Guide du Développeur d'Android.