Volevo anche fare questo senza usando Ant o il comando approccio di linea. Ecco che cosa ha funzionato (su Eclipse + solo Windows):.
(È necessario scaricare Proguard Lo script si aspetta di trovare qui: C: \ android-sdk_r04-windows \ Proguard \ lib \ proguard.jar).
Creare un file batch di Windows, "C: \ android-sdk_r04-windows \ 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
In Eclipse, aprire la pagina di proprietà del vostro Android progetto, selezionare il riquadro "Builders" e aggiungere un nuovo builder di tipo "Programma". Nel campo "Posizione" della scheda principale, inserisci il percorso assoluto dello script nel passaggio precedente. Nel campo "Directory di lavoro" inserisci la variabile $ {build_project}. Nella scheda "Opzioni di creazione" seleziona "Dopo una pulizia" sotto "Esegui builder".
Assicurati che questo strumento di generazione sia l'ultimo, appena prima del builder del pacchetto Android.
Creare un file di configurazione proguard nella cartella principale del progetto Android. Li personalizzo leggermente e li includo nel controllo di revisione, ma dipende da te. Il file che uso è chiamato "android.pro", come il nome nello script, ed è simile alla configurazione nel blog dev ma include un'intestazione con injar, outjar, e le dichiarazioni libraryjar, ad esempio:
-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);
}
- Si consiglia di disattivare questo Generatore per la maggior parte del tempo. Quando è il momento di testare o esportare un APK offuscato, accenderlo e quindi fare un "Project> Clean" da Eclipse, incluso il progetto e tutti i progetti di libreria da cui dipende.
Penso che sia tutto qui.
fonte
2010-09-22 19:40:39
La risposta a http://stackoverflow.com/a/11351168/2291 descrive le modifiche che sono state aggiornate per rispettare cambiamenti nel SDK. –