2010-09-21 10 views
6

Publikuję aplikację dla systemu Android opracowaną w środowisku Eclipse i, jak zaznaczono w tytule, chciałbym zintegrować obfuskację Proguard z kompilacją, specjalnie do eksportowania podpisanej aplikacji.Jak skonfigurować ProGuard w Eclipse podczas eksportowania podpisanej, zaciemnionej aplikacji dla systemu Android?

Ktoś miał szczęście bez pójścia ścieżką mrówki?

+0

Odpowiedź na http://stackoverflow.com/a/11351168/2291 opisuje zmiany, które zostały zaktualizowane do przestrzegania zmiany w SDK. –

Odpowiedz

3

Ok, to jest najbardziej istotne i ostatni post na ten temat:

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

To dawka wykorzystać Ant, ale wszystkie twarde części są zrobione dla ciebie, i tak długo, jak postępować zgodnie z instrukcją , to działa. Uwaga: nie pomijaj aktualizacji, działa to tylko z SDK r7 + i aktualizacja aktualizacji Eclipse nie jest złym pomysłem, także w przypadku aktualizacji AVD.

I dla każdego, dodając słoików zewnętrznych ProGuards konfiguracji procfg.txt i dodać:

-libraryjars {ścieżka} {nazwa_pliku} .jar

4

Chciałem to zrobić bez używania Ant lub polecenia podejście liniowe. Oto, co zadziałało (tylko w Eclipse + Windows).

  • (Należy pobrać PROGUARD Skrypt spodziewa się znaleźć go tutaj: C: \ android-sdk_r04-windows \ PROGUARD \ lib \ proguard.jar).

  • Utwórz plik wsadowy systemu 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 
  • w Eclipse, otworzyć stronę właściwości swojego Androida projekt, wybierz panel "Konstruktorzy" i dodaj nowego konstruktora typu "Program". W polu "Lokalizacja" głównej zakładki umieść bezwzględną ścieżkę skryptu w poprzednim kroku. W polu "Katalog roboczy" umieść zmienną $ {build_project}. W zakładce "Opcje budowy" wybierz "Po wyczyszczeniu" w "Uruchom program budujący".

  • Upewnij się, że to narzędzie do kompilacji jest dostępne jako ostatnie, tuż przed instalatorem pakietów systemu Android.

  • Utwórz plik konfiguracyjny proguarda w folderze głównym projektu Android. Dostosowuję je nieco i włączam je do kontroli wersji, ale to zależy od ciebie. Plik używam nazywa się „android.pro”, jak nazwał w skrypcie, i jest podobna do konfiguracji w blogu dev ale zawiera nagłówek z injar, outjar i libraryjar wypowiedzi, na przykład:


    -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); 
    } 
  • Będziesz chciał, aby ten Konstruktor był wyłączony przez większość czasu. Kiedy nadszedł czas na przetestowanie lub wyeksportowanie zaszyfrowanego pliku APK, włącz go, a następnie wykonaj "Project> Clean" od Eclipse, w tym projekt i wszelkie projekty biblioteczne, od których zależy.

Myślę, że o to chodzi.

+0

Czy nadal jest potrzebny z najnowszymi pakietami Eclipse i Android SDK? – Yar

+1

Więc gdzie ukryty apk jest przechowywany po wszystkich krokach? – EnthuDeveloper

1

Jeśli używasz zaćmienie tylko odkomentować linię 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 
Powiązane problemy