2016-07-13 10 views
0

Ich erhalte diesen Fehler, wenn ich versuche, app mit proguard neu zu erstellen: (Ich habe alle vorgeschlagenen Lösungen für den Fehler MSB6006: "java.exe" mit Code 1 beendet, aber in meinem Fall scheint es einige Konflikte mit GCM zu haben)Unterstützt Proguard GCM?

19> PROGUARD: Warnung: com.google.android.gms.common.GooglePlayServicesUtil: nicht finden können verwiesen Methode ‚Leere setLatestEventInfo (android.content.Context, java.lang.CharSequence, java .lang.CharSequence, android.app.PendingIntent) ' in der Klasse android.app.Notification 19> PROGUARD: Warnung: com.google.android.gms.gcm.zza: kann die referenzierte Methode' void setLates nicht finden tEventInfo (android.content.Context, java.lang.CharSequence, java.lang.CharSequence, android.app.PendingIntent) ' in der Klasse android.app.Notification 19> Sie sollten überprüfen, ob Sie zusätzliche Programm-Jars angeben müssen. 19> PROGUARD: warning: dort waren 2 unaufgelöste Verweise auf Programmklassenmitglieder. 19>
Ihre Eingabeklassen scheinen inkonsistent zu sein. 19> Sie können müssen Sie neu kompilieren und es erneut versuchen. 19> Alternativ können Sie unter die Option 19>
'-dontskipnonpubliclibraryclassmembers' angeben. 19> java.io.IOException: Bitte korrigieren Sie zuerst die obigen Warnungen. 19> unter proguard.Initializer.execute (Initialisierer.java:321) 19> unter proguard.ProGuard.initialize (ProGuard.java:211) 19> unter proguard.ProGuard.execute (ProGuard.java:86) 19> bei proguard.ProGuard.main (ProGuard.java:492) 19> JAVA_TOOL_OPTIONS abgeholt: -Dfile.encoding = UTF8 19> C: \ Program Files (x86) \ MSBuild \ Xamarin \ Android \ Xamarin.Android.Common .targets (2118,3): Fehler MSB6006: „java.exe“ verlassen mit Code 1.

+0

Ich benutze Proguard (in 'Xamarin.Android' Projekten) mit GCM und habe kein Problem. Ich würde annehmen, dass es die Verwendung von 'setLatestEventInfo' in dem Fehler ist, den Sie gepostet haben, da dies eine ältere/veraltete Methode ist (vorausgesetzt, Sie verwenden sie und richten sich an ältere APIs). Die Antwort sollte helfen. – SushiHangover

Antwort

2

Die Google GMS Bibliotheken manchmal versuchen Bibliothek Methoden zuzugreifen, die für eine bestimmte Ziel SDK-Version nicht verfügbar sind und anmutig Behandeln Sie Fehler zur Laufzeit. So ist es in der Regel erforderlich, und sicher, so etwas fügen solche Warnungen zu ignorieren:

-dontwarn com.google.android.gms.** 
-dontnote com.google.android.gms.** 

Diese Regeln werden alle Warnungen und Hinweise aus den gms Bibliotheken ignorieren.

+0

danke, sollte ich es zur proguard.cfg hinzufügen? – roz83

+0

Afaik sollte dies der richtige Ort für eine Xamarin-basierte Anwendung sein. –

0

ich es mit dieser Lösung aus Xamarin Forum gelöst:

Datei mit dem Namen proguard.cfg innerhalb Android-Projektes in der Lösung erstellen. Klicken Sie mit der rechten Maustaste und setzen Sie Build Action auf ProguardConfig. die folgenden Zeilen hinzufügen:

-keep class com.google.android.gms.** { *; } 
-dontwarn com.google.android.gms.** 

die oben Amend nach Art von Fehlern Sie bekommen Stellen Sie sicher, Datei als UTF-8 und UTF-8 nicht BOM

Compile-Version sparen: 6.0 Min. Ziel: 5.1 Zielversion: 6.0