2016-05-13 39 views
5

Ho scaricato la 25.1.6 rilascio di strumenti di Android oggi e sto notando che Proguard sta cadendo sopra con questo errore:Proguard non riuscendo con 25.1.6 rilascio di strumenti di Android

Error:Execution failed for task ':app:transformClassesWithNewClassShrinkerForDebug'. 
> /usr/local/opt/android-sdk/tools/proguard/proguard-android.txt line 43:15 extraneous input '[]' expecting ')' 

Sono certo che Non ho cambiato nulla nel file proguard-android.txt. Linea 43 legge per me come segue:

void set*(%[]); 

sto notando che il file qui ...

https://android.googlesource.com/platform/sdk/+/android-6.0.1_r43/files/proguard-android.txt

... è diverso da quello che ho sulla mia macchina? Quel file è l'ultima versione del file che dovrei avere?

risposta

3

Hmm, sembra che la cartella nella mia copia locale di Android SDK non sia aggiornata da Android SDK Manager. Ho appena scaricato l'SDK di Android Ripartire da qui ...

http://developer.android.com/sdk/index.html

... e sostituito la cartella tools/proguard in quanto la distribuzione sul tools/proguard nella mia copia locale del SDK di Android e l'errore è andato.

Sarebbe bello se la cartella fosse aggiornata tramite Android SDK Manager.

2

Sembra succedere ad alcuni di noi. Ho scaricato solo la cartella allegata in questa risposta e l'ho copiata nella cartella android-sdk/tools sovrascrivendo ciò che c'è e ora funziona senza problemi.

https://code.google.com/p/android/issues/detail?id=210012

+0

Ciao @Eylen, vedere la mia risposta in questa discussione. Il problema riscontrato è che la cartella 'tools/proguard' non è aggiornata come parte dell'aggiornamento degli strumenti Android nella finestra di Android SDK Manager. Probabilmente stai ottenendo la cartella 'tools/proguard' da un nuovo download dell'SDK Android piuttosto che dal link nella tua risposta perché è probabile che quest'ultimo non verrà aggiornato e diventerà datato nel tempo. –

+1

Sì, potresti avere ragione. Ma spero che nei prossimi aggiornamenti la cartella si aggiorni correttamente – Eylen

4

solo sapere diverse opzioni:

La cosa che mi ha aiutato è la sostituzione corrispondente proguard-android.txt file con quello da this pagina

E solo nel caso la pagina va via il salvataggio del suo contenuto qui:

# This is a configuration file for ProGuard. 
# http://proguard.sourceforge.net/index.html#manual/usage.html 
-dontusemixedcaseclassnames 
-dontskipnonpubliclibraryclasses 
-verbose 
# Optimization is turned off by default. Dex does not like code run 
# through the ProGuard optimize and preverify steps (and performs some 
# of these optimizations on its own). 
-dontoptimize 
-dontpreverify 
# Note that if you want to enable optimization, you cannot just 
# include optimization flags in your own project configuration file; 
# instead you will need to point to the 
# "proguard-android-optimize.txt" file instead of this one from your 
# project.properties file. 
-keepattributes *Annotation* 
-keep public class com.google.vending.licensing.ILicensingService 
-keep public class com.android.vending.licensing.ILicensingService 
# For native methods, see http://proguard.sourceforge.net/manual/examples.html#native 
-keepclasseswithmembernames class * { 
    native <methods>; 
} 
# keep setters in Views so that animations can still work. 
# see http://proguard.sourceforge.net/manual/examples.html#beans 
-keepclassmembers public class * extends android.view.View { 
    void set*(***); 
    *** get*(); 
} 
# We want to keep methods in Activity that could be used in the XML attribute onClick 
-keepclassmembers class * extends android.app.Activity { 
    public void *(android.view.View); 
} 
# For enumeration classes, see http://proguard.sourceforge.net/manual/examples.html#enumerations 
-keepclassmembers enum * { 
    public static **[] values(); 
    public static ** valueOf(java.lang.String); 
} 
-keepclassmembers class * implements android.os.Parcelable { 
    public static final android.os.Parcelable$Creator CREATOR; 
} 
-keepclassmembers class **.R$* { 
    public static <fields>; 
} 
# The support library contains references to newer platform versions. 
# Don't warn about those in case this app is linking against an older 
# platform version. We know about them, and they are safe. 
-dontwarn android.support.** 
+0

Dove trovare "corrispondente proguard-android.txt file"? –

+0

Ho trovato il mio in '~/Android/Sdk/tools/proguard/proguard-android.txt'. Se questo non dovesse funzionare, prova 'find/path/to/android/sdk | grep 'proguard-android.txt''. – sbeliakov

0

In modalità di debug ho impostato minifyEnabled a false

+1

Ti imbatterai in questo problema quando eseguirai una versione di rilascio ... a meno che i file nella cartella '/tools/proguard' siano aggiornati. –