¿Cómo configurar ProGuard en Eclipse al exportar una aplicación Android firmada y ofuscada?

Estoy publicando una aplicación para Android desarrollada en Eclipse y, como se indica en el título, me gustaría integrar la ofuscación Proguard en la compilación, específicamente para exportar una aplicación firmada.

¿Alguien tuvo suerte sin ir por el camino de las hormigas?

También quería hacer esto sin usar Ant o el enfoque de línea de comandos. Esto es lo que funcionó (solo en Eclipse + Windows):

  • (Necesitas descargar Proguard, el script espera encontrarlo aquí: C: \ android-sdk_r04-windows \ proguard \ lib \ proguard.jar).

  • Cree un archivo de proceso por lotes de 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 
  • En Eclipse, abra la página de propiedades de su proyecto de Android, seleccione el panel "Constructores" y agregue un nuevo constructor de tipo "Programa". En el campo "Ubicación" de la pestaña principal, coloque la ruta absoluta del script en el paso anterior. En el campo "Directorio de trabajo", coloque la variable $ {build_project}. En la pestaña "Build options" seleccione "After a clean" en "Run builder".

  • Asegúrese de que esta herramienta de generación vaya al lado de la última, justo antes del generador de paquetes de Android.

  • Cree un archivo de configuración proguard en la carpeta raíz del proyecto de Android. Personalizar estos ligeramente e incluirlos en el control de revisión, pero eso depende de usted. El archivo que utilizo se denomina "android.pro", como se menciona en el script, y es similar a la configuración en el blog de desarrollo, pero incluye un encabezado con instrucciones injar, outjar y libraryjar, por ejemplo:

 -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); } 
  • Usted querrá mantener este constructor desactivado la mayor parte del tiempo. Cuando sea el momento de probar o exportar un APK ofuscado, enciéndalo y luego haga un "Proyecto> Limpiar" de Eclipse, incluyendo el proyecto y cualquier proyecto de biblioteca de los que dependa.

Creo que eso es todo.

Ok, este es el post más relevante y reciente sobre el tema:

http://android-developers.blogspot.com/2010/09/proguard-android-and-licensing-server.html

El uso de dosis Ant, pero todas las partes duras se hacen para usted, y siempre y cuando siga la instrucción, funciona. Una nota: no salte la actualización esto sólo funciona con SDK r7 +, y no es una mala idea ejecutar la actualización de eclipse, para la actualización AVD también.

Y, para cualquiera que agregue jarras externas, configure ProGuards procfg.txt y agregue:

-libraryjars {path} {file_name} .jar

Si está utilizando eclipse, simplemente descomente la línea project.properties

 # To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home): proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt 
  • ¿Cómo decirle a ProGuard que ofusque métodos y nombres de clase?
  • Cómo ofuscar mi proyecto android en IDE eclipse?
  • ¿Cómo puedo excluir .jar externa de obfuscation por Proguard (proyecto de Android)?
  • ¿Cómo configurar proguard para la interfaz javascript?
  • Volley parece no funcionar después de ProGuard obfuscate
  • Evite que la clase se contraiga
  • ¿Puede un Proyecto de Biblioteca de Android (APKLIB) ser ofuscado por Proguard?
  • Android Proguard ExceptionInInitializerError y RuntimeException
  • Cómo usar proguard en android 2.3
  • Proguard alternativa para ofuscar aplicaciones Android usando bibliotecas de terceros precompiladas
  • ¿Puedo utilizar serialización con ofuscación?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.