¿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?
- Cómo depurar con aplicaciones ofuscadas (con ProGuard) en Android?
- Proguard y reflexión en Android
- Android obfuscation código con ProGuard ... ¿cómo se sabe que ha sido ofuscado?
- ¿Cómo puedo ocultar mi código en Eclipse? (Androide)
- Ofuscación de proyecto de biblioteca android
- Opciones de Android Proguard: Reglas más estrictas y eliminar instrucciones de registro
- Problema del enum de ofuscación Proguard
- ¿Proguard mantiene nombres de clase?
- Cómo ofuscar una biblioteca de Android (archivo .jar) usando Proguard en Eclipse
- Proguard Obfuscation causando dex compliation para lanzar Excepciones
- Construcción de ANT para Android Proguard obfuscation
- Caída de aplicación con Proguard habilitado
- conflicto entre ksoap2 y actionbarscherlock usando Proguard
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
- ¿El uso de Android del término flinger?
- El tipo Enum no es genérico; No se puede parametrizar con argumentos <RestClient.RequestMethod>