2016-05-13 7 views
5

ich heute die 25.1.6 Version von Android Tools heruntergeladen und ich bemerkte, dass proguard mit diesem Fehler Umfallen ist:Proguard mit 25.1.6 Release von Android Tools Fehler

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

Ich bin sicher, dass Ich habe nichts in der proguard-android.txt Datei geändert. Zeile 43 liest für mich wie folgt:

void set*(%[]); 

ich bemerken, dass die Datei hier ...

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

... ist anders, was ich habe auf meinem Rechner? Ist diese Datei die neueste Version der Datei, die ich haben sollte?

Antwort

3

Hmm, es sieht der tools/proguard Ordner in meiner lokalen Kopie des Android SDK wird nicht vom Android SDK Manager aktualisiert. Ich habe gerade heruntergeladen der Android SDK neu hier ...

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

... und ersetzt den tools/proguard Ordner in dieser Verteilung über die tools/proguard in meinem lokalen Kopie des Android SDK und der Fehler ist weg.

Wäre großartig, wenn der tools/proguard Ordner über den Android SDK Manager aktualisiert wurde.

2

Scheint, dass das mit einigen von uns passiert. Ich habe nur den Ordner heruntergeladen, der in dieser Antwort angehängt ist, und ihn in den Ordner "android-sdk/tools" kopiert und dabei überschrieben, was da ist und jetzt funktioniert es ohne Probleme.

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

+0

Hallo @Eylen, bitte sehen Sie meine Antwort in diesem Thread. Das Grundproblem, das ich gefunden habe, ist, dass der 'tools/proguard'-Ordner nicht als Teil des Android-Tools-Updates im Android SDK-Manager-Fenster aktualisiert wird. Es ist wahrscheinlich am besten, wenn Sie den Ordner 'tools/proguard' von einem neuen Download des Android-SDKs und nicht von dem Link in Ihrer Antwort erhalten, da dieser wahrscheinlich nicht aktualisiert wird und mit der Zeit veraltet wird. –

+1

Ja, Sie haben vielleicht Recht. Aber ich hoffe, dass in zukünftigen Updates der Ordner korrekt aktualisiert wird – Eylen

4

Nur einige Optionen zu wissen:

Die Sache, die ich proguard-android.txt Datei mit dem aus this Seite

entsprechend ersetzt half Und für den Fall der Seite entfernt seinen Inhalt Speicher geht hier:

# 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

Wo finde ich "entsprechende proguard-android.txt Datei"? –

+0

Ich habe meins in '~/Android/Sdk/tools/progard/proguard-android.txt' gefunden. Wenn dies für Sie nicht funktioniert, versuchen Sie 'find/path/to/android/sdk | grep 'proguard-android.txt''. – sbeliakov

0

Im Debug-Modus setze ich minifyEnabled bis false

+1

Sie werden dann auf dieses Problem stoßen, wenn Sie einen Release-Build erstellen ... es sei denn, die Dateien in Ihrem '/tools/proguard'-Ordner sind auf dem neuesten Stand. –