2010-09-21 6 views
6

Sto pubblicando un'applicazione Android sviluppata in Eclipse e, come indicato nel titolo, mi piacerebbe integrare l'obsolescenza di Proguard nella build, in particolare per esportare un'app firmata.Come impostare ProGuard in Eclipse durante l'esportazione di un'applicazione Android firmata e offuscata?

Qualcuno ha avuto fortuna senza percorrere la via delle formiche?

+0

La risposta a http://stackoverflow.com/a/11351168/2291 descrive le modifiche che sono state aggiornate per rispettare cambiamenti nel SDK. –

risposta

3

Ok, questo è il post più rilevanti e recenti sul tema:

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

E DOSE usare Ant, ma tutte le parti dure sono fatto per te, e finché si seguono le istruzioni , Funziona. Una nota: non saltare l'aggiornamento funziona solo con SDK r7 +, e non è una cattiva idea eseguire l'aggiornamento di Eclipse, anche per l'aggiornamento AVD.

E, per tutti coloro che l'aggiunta di vasi esterni, ProGuards impostazione procfg.txt e aggiungono:

-libraryjars {path} {nome_file} .jar

4

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.

+0

E 'ancora necessario oggi con i nuovi Eclipse e Android SDK? – Yar

+1

Quindi dove viene memorizzato l'apk offuscato dopo tutti i passaggi? – EnthuDeveloper

1

Se si utilizza Eclipse solo il commento dalla riga 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 
Problemi correlati