2010-09-21 16 views
6

Estoy publicando una aplicación de Android desarrollada en Eclipse y, como se indica en el título, me gustaría integrar la ofuscación de Proguard en la compilación, específicamente para exportar una aplicación firmada.¿Cómo configurar ProGuard en Eclipse al exportar una aplicación de Android firmada y ofuscada?

¿Alguien tuvo algo de suerte sin pasar por la ruta de las hormigas?

+0

La respuesta a http://stackoverflow.com/a/11351168/2291 describe los cambios que se han actualizado a respetar los cambios en el SDK. –

Respuesta

3

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

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

Es dosis uso de hormigas, pero todas las partes duras se hacen por ti, y siempre y cuando siga las instrucciones , funciona. Una nota: no se salte la actualización, esto solo funciona con SDK r7 +, y no es una mala idea ejecutar la actualización de eclipse, también para la actualización de AVD.

Y, para cualquier persona añadiendo frascos externos, ProGuards configuración procfg.txt y añaden:

-libraryjars {PATH} {} nombre_archivo .jar

4

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

  • (es necesario descargar Proguard El script espera de encontrar aquí: C: \ android-sdk_r04-windows \ Proguard \ lib \ proguard.jar)

  • Crear un archivo por lotes de Windows, "C: \-sdk_r04-ventanas androide \ 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, que aparezca la página de propiedades de tu Android proyecto, seleccione el panel "Constructores" y agregue un nuevo generador de tipo "Programa". En el campo "Ubicación" de la pestaña principal, coloque la ruta absoluta de la secuencia de comandos en el paso anterior. En el campo "Directorio de trabajo", coloque la variable $ {build_project}. En la pestaña "Opciones de compilación", seleccione "Después de una limpieza" en "Ejecutar compilador".

  • Asegúrate de que esta herramienta de compilación sea la última, justo antes del creador de paquetes de Android.

  • Cree un archivo de configuración de proguard en la carpeta raíz del proyecto de Android. Los personalizo ligeramente y los incluyo en el control de revisiones, pero eso depende de usted. El archivo que uso se llama "android.pro", como se nombran en el guión, y es similar a la configuración en el blog dev pero incluye una cabecera con injar, outjar, y las declaraciones 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); 
    } 
  • Querrá mantener este generador apagado la mayor parte del tiempo. Cuando sea el momento de probar o exportar un APK ofuscado, enciéndalo y luego haga un "Proyecto> Limpiar" desde Eclipse, incluido el proyecto y cualquier proyecto de biblioteca del que dependa.

Creo que eso es todo.

+0

¿Todavía se necesita hoy con el nuevo Eclipse y Android SDK? – Yar

+1

Entonces, ¿dónde se almacena el apk ofuscado después de todos los pasos? – EnthuDeveloper

1

Si está utilizando Eclipse acaba de comentar 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 
Cuestiones relacionadas