Je voulais aussi le faire sans utiliser Ant ou la commande approche en ligne. Voici ce qui a fonctionné (sur Eclipse + Windows uniquement):.
(Vous devez télécharger Proguard Le script prévoit de le trouver ici: C: \ windows-sdk_r04-android \ proguard \ lib \ proguard.jar).
Créer un fichier de commandes de Windows, "C: \ windows-sdk_r04-android \ obfusc.bat":
DEL /S /Q obfuscated
MKDIR obfuscated
java -jar C:\android-sdk_r04-windows\proguard\lib\proguard.jar @android.pro
DEL /S /Q bin\com\
DEL /S /Q bin\org\
ROBOCOPY obfuscated\com bin\com /S
Dans Eclipse, afficher la page de propriétés de votre Android projet, sélectionnez le volet "Builders" et ajoutez un nouveau constructeur de type "Program". Dans le champ "Emplacement" de l'onglet principal, mettez le chemin absolu du script à l'étape précédente. Dans le champ "Répertoire de travail", mettez la variable $ {build_project}. Dans l'onglet "Options de construction", sélectionnez "Après un nettoyage" sous "Exécuter le générateur".
Assurez-vous que cet outil de construction est à côté de durer, juste avant le constructeur de package Android.
Créer un fichier de configuration PROGUARD dans le dossier racine du projet Android. Je les personnalise légèrement et les inclue dans le contrôle des révisions, mais c'est à vous de décider. Le fichier que je l'utilise est appelé « android.pro », comme le nom dans le script, et est similaire à la configuration dans le dev blog mais inclut un en-tête avec injar, outjar et déclarations libraryjar, par exemple:
-injars bin(!.svn/**)
-outjars obfuscated
-libraryjars C:\android-sdk_r04-windows\android-sdk-windows\platforms\android-1.6\android.jar
-libraryjars C:\GoogleAnalyticsAndroid_0.7\libGoogleAnalytics.jar
-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-verbose
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
-printmapping proguard.map
-keepattributes SourceFile,LineNumberTable
-keep public class * extends android.app.Activity
-keep public class * extends android.app.Application
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.content.ContentProvider
-keep public class com.android.vending.licensing.ILicensingService
-keepclasseswithmembernames class * {
native ;
}
-keepclasseswithmembernames class * {
public (android.content.Context, android.util.AttributeSet);
}
-keepclasseswithmembernames class * {
public (android.content.Context, android.util.AttributeSet, int);
}
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
- Vous devez conserver ce générateur désactivé la plupart du temps. Quand il est temps de tester ou d'exporter un APK obfusqué, allumez-le, puis effectuez un "Projet> Clean" à partir d'Eclipse, y compris le projet et tous les projets de bibliothèque dont il dépend.
Je pense que c'est à ce sujet.
La réponse à http://stackoverflow.com/a/11351168/2291 décrit les modifications qui ont été mis à jour pour respecter les changements dans le SDK. –