2013-07-15 37 views
11

Ho passato da Eclipse ad Android Studio negli ultimi giorni e ho ottenuto quasi tutto funzionante. Tuttavia, quando genero un APK firmato sembra che ProGuard non sia mai in esecuzione.Android Studio ProGuard non sembra funzionare

Sto utilizzando la procedura guidata Genera APK con firma, selezionando "Esegui ProGuard" e specificando il mio proguard.cfg come file di configurazione. Il processo di compilazione viene eseguito senza errori e genera un apk funzionale, ma l'apk è maggiore del 65% rispetto a quello generato da Eclipse. Quando creo l'apk tramite l'APK Wizard di Android Studio e non selezioni 'Esegui Proguard' l'apk risultante è della stessa dimensione di quello che avrebbe dovuto essere eseguito su ProGuard. Nessun mapping.txt, seeds.txt o usage.txt viene generato in nessun punto della directory del mio progetto. Ho provato ad aggiungere

buildTypes { 
    release { 
     runProguard true 
     proguardFile file('proguard.cfg') 
     proguardFile getDefaultProguardFile('project-android.txt') 
    } 
} 

e varianti al mio file build.gradle ma che non ha avuto alcun effetto.

Questo si verifica su Android Studio 0.2.0, anche se stavo vedendo lo stesso comportamento su 0.1.9. Sto lavorando su Windows 7.

Qualcuno può dirmi cosa potrebbe succedere? Sarei felice se riuscissi a trovare i log che ProGuard dovrebbe generare.

+0

Non sono nemmeno in grado di eseguire proguard. Stai generando l'apk tramite Build -> Genera APK firmato? In tal caso, quale file proguard si sceglie nella seguente finestra di dialogo? Ci sono pochissime informazioni a riguardo sulla documentazione ... –

+0

Sto vivendo esattamente lo stesso, pro guard non fa nulla, sebbene il file di configurazione sia fornito durante il processo "Genera APK firmato". Sfortunatamente ci sono poche informazioni su Android Studio che funziona con Pro Guard. Ha anche indicato la domanda qui: http://stackoverflow.com/questions/18087664/generating-a-pro-guard-configuration-file-with-android-studio#comment26529592_18093805 –

risposta

2

Fortunatamente, ho trovato una soluzione. Il problema era che prima di creare l'apk firmato, avevo modificato il nome del pacchetto in AndroidManifest per sovrascrivere una particolare build nel Google Play Store. Tuttavia, questa modifica del nome del pacchetto non ha effettuato il refactoring di tutto il nome del pacchetto "import" corrispondente. R; " linee in tutto il codice. Oggi, dopo aver reimportato il progetto, non si sarebbe più costruito a causa di errori nel tentativo di importare R. Una volta che ho modificato tutte le linee di importazione, non solo il mio progetto è stato compilato correttamente, ma esportando l'apk firmato ProGuard ha funzionato correttamente.

Suppongo che Android Studio stia in qualche modo memorizzando nella cache le righe di "importazione R" e che quando ProGuard stava tentando di eseguirlo non aveva quei valori memorizzati nella cache e quindi si arrestava in modo anomalo. Perché non c'è stato nessun output di errore da farmi vedere, non lo so.

0
**in new Gradle system** 

BuildType.runProguard     -> minifyEnabled 
BuildType.zipAlign     -> zipAlignEnabled 
BuildType.jniDebugBuild    -> jniDebuggable 
BuildType.renderscriptDebug   -> renderscriptDebuggable 
ProductFlavor.renderscriptSupportMode -> renderscriptSupportModeEnabled 
ProductFlavor.renderscriptNdkMode  -> renderscriptNdkModeEnabled 

o visitare il sito http://tools.android.com/tech-docs/new-build-system

4

Basta aggiornare il proprio build.gradle

buildTypes {   
    release { 
    minifyEnabled true 
    proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' 
    } 
} 

Dettagli Reference. Spero che ti possa essere d'aiuto

Problemi correlati