Xamarin.Android Proguard-nieobsługiwana wersja klasy 52.0

Próbuję użyć Proguard w moim Xamarinie.Projekt Android, jednak kompilacja nie powiodła się z błędem Unsupported class version number [52.0] (maximum 51.0, Java 1.7)

Widziałem z tych dwóch pytania , że może to być niedopasowanie pomiędzy Javą 7 i Javą 8, dokładniej niektóre wersje proguard nie obsługują Javy 8. Jednak w preferencjach Xamarin -> lokalizacja SDK, Java SDK wskazuje na JDK 7 : /Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home

Czy jest jakieś miejsce, gdzie można precyzyjniej skonfigurować proguard ? Jakiś inny pomysł ?

Oto dziennik awarii:

Java.io. IOException: Can ' t read [/Library / Framework/Xamarin.Android.framework / wersje/7.0.0-18/lib / xbuild-Framework/MonoAndroid / v7.0 / mono.android.jar] (Nie można przetworzyć klasy [android / app/ActivityTracker.Klasa] (nieobsługiwane numer wersji klasy [52.0] (maksymalnie 51.0, Java 1.7))) W proguard.InputReader.readInput (InputReader.java:230) W proguard.InputReader.readInput (InputReader.java:200) W proguard.InputReader.readInput (InputReader.Java:178) na proguard.InputReader.execute (InputReader.java: 78) w proguard.ProGuard.readInput (Węg.java:196) w proguard.ProGuard.execute (ProGuard.java: 78) w proguard.ProGuard.główna (ProGuard.java:492): java. io. IOException: nie można przetworzyć klasy [android / app/Activittracker.class] (nieobsługiwany numer wersji klasy [52.0] (maksymalnie 51.0, Java 1.7)) przy proguard. io.ClassReader.read(ClassReader. java:112) at proguard. io. FilteredDataEntryReader. read (FilteredDataEntryReader. java:87) at proguard. io. JarReader. read (JarReader. java:65) at proguard. io.DirectoryPump.readFiles(DirectoryPump. java:65) at proguard.io.DirectoryPump.pumpdataentries(DirectoryPump. java:53) at proguard.InputReader.readInput (InputReader.Jawa: 226) ... 6 Więcej Spowodowane przez: java.lang.UnsupportedOperationException: Unsupported class numer wersji [52.0] (maksymalnie 51.0, Java 1.7) W proguard.classfile.util.ClassUtil.checkVersionNumbers (ClassUtil.Java:140) na proguard.classfile.io.ProgramClassReader.visitProgramClass(ProgramClassReader. java:88) w proguard.classfile.Klasa programowa.accept(ProgramClass.Java:346) w proguard. io. ClassReader. read (ClassReader. java: 91)... 11 więcej

9 Ostrzeżenie(s) 1 Błąd(S)

Author: Eino Gourdin, 2016-09-15

4 answers

Musisz zaktualizować domyślne Android SDK proguard.jar z najnowszą wersją Proguard znaleźć tutaj:

Https://sourceforge.net/projects/proguard/files/

Zalecałbym zainstalowanie tego na stronie domyślnej wersji Androida w android-sdk\tools\proguard. Po prostu zmień nazwę istniejącego folderu na coś innego i dodaj nową wersję proguard.

To jest wymienione w Xamarin.Android 7.0 release Uwagi:

Https://developer.xamarin.com/releases/android/xamarin.android_7/xamarin.android_7.0/

W którym został również zarejestrowany następujący błąd:

Https://bugzilla.xamarin.com/show_bug.cgi?id=44187

Który jest skoordynowany z żądaniem ściągnięcia w Xamarinie.Repozytorium Androida:

Https://github.com/xamarin/xamarin-android/pull/209

 101
Author: Jon Douglas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-16 19:41:28

Prosta Odpowiedź

Zgodnie z dokumentacją musisz zaktualizować wersję proguard (począwszy od Wersja 5 obsługuje Java 8) i upewnij się, że używasz jdk1.8

JDK 1.8-do API 24 +

JDK 1.7-do API 23

JDK 1.6-do API 20

Jak zaktualizować z konsoli pakietu napisz To polecenie

PM> Install-Package name.atsushieno.proguard.facebook 

Https://www.nuget.org/packages/name.atsushieno.proguard.facebook

Lub Pobierz proguard ręcznie i zastąp go bieżącą wersją

YOUR_SDK -- > tools -- > proguard -- > (usuń wszystkie stare pliki , rozpakuj nową wersję)

Szczegółowa odpowiedź Jeśli włączysz target Android Nogut i włączysz Multi-Dex lub ProGuard musisz użyć odpowiedniej wersji ProGuard (jak powiedział ToolMakerSteve mają zależność od ProGuard) więc upewnij się, że kierujesz Javę 8 z narzędzi - > opcje - > xamarin - > java i zaktualizuj wersję ProGuard

Aktualizacja Odpowiedź

Upewnij się, że wersja biblioteki wsparcia jest zgodna z wersją docelową , jeśli celujesz

Android 7 (api 24) oznacza, że Twoja biblioteka wsparcia powinna mieć 24

Android 7.1 (api 25 ) oznacza, że Twoja biblioteka wsparcia powinna mieć 25

Do wszystkich bibliotek wsparcia i jeśli korzystasz z usług google play, jak również

 2
Author: Mina Fawzy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-01 11:57:44

Miałem również do czynienia z tym samym problemem na moim Windows 10 x64 i visual studio 2015. Ustawiłem ścieżkę JDK do JDK 1.8 w ustawieniach Androida w Visual studio tools - > options ->xamarin - > Java development kit location. wskazywał na "C:\Program Files (x86) \ Java \ jdk1.7. 0_55" and I made it to "C:\Program Files \ Java \ jdk1.8. 0_31" i problem został rozwiązany.

 1
Author: Haider Minto,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-06 03:33:26

Miałem problem, w którym Proguard usuwał Biblioteki usług Google Play z mojej aplikacji.

Oprócz następującej odpowiedzi @Jon Douglas ' powyżej, musiałem dodać następujące linijki tekstu do plikuproguard-android.txt znalezionego w tym folderze:

/(Path to your Android SDK Folder)/tools/proguard

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

Kompletny proguard-android.plik txt

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

# 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.**

# Understand the @Keep support annotation.
-keep class android.support.annotation.Keep

-keep @android.support.annotation.Keep class * {*;}

-keepclasseswithmembers class * {
    @android.support.annotation.Keep <methods>;
}

-keepclasseswithmembers class * {
    @android.support.annotation.Keep <fields>;
}

-keepclasseswithmembers class * {
    @android.support.annotation.Keep <init>(...);
}
 1
Author: Brandon Minnick,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:26:10