VSTS — проблемы с версией Xamarin Proguard и JDK 1.8

У меня есть проект Xamarin Forms, который я пытаюсь интегрировать с HockeyApps, используя непрерывную интеграцию с VSTS. Мое приложение компилируется с использованием Java 1.8 и использует ProGuard для сжатия файла Android apk. Но когда java пытается скомпилировать приложение, он обнаруживает, что установленная версия proguard несовместима с Java 1.8. Ошибка следующая: ... Не удается обработать класс [android/app/ActivityTracker.class] Неподдерживаемый номер версии класса [52.0] максимум 51.0, Java 1.7... В моей локальной установке Visual Studio я исправлено замена версии proguard по умолчанию, которую устанавливает Xamarin, на последнюю версию 5.x...

Кто-нибудь знает, как это сделать с VSTS?

ПОДРОБНАЯ ОШИБКА:

_CompileToDalvikWithDx:
  C:\Program Files\Java\jdk1.8.0_102\\bin\java.exe -jar C:\java\androidsdk\android-sdk\tools\proguard\lib\proguard.jar -include C:\java\androidsdk\android-sdk\tools\proguard\proguard-android.txt -include obj\Release\proguard\proguard_xamarin.cfg -include obj\Release\proguard\proguard_project_references.cfg -include obj\Release\proguard\proguard_project_primary.cfg -include proguard.cfg "-injars 'obj\Release\proguard\__proguard_input__.jar';'C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\MonoAndroid\v7.0\mono.android.jar';'obj\Release\__library_projects__\FormsViewGroup\library_project_imports\formsviewgroup.jar';'obj\Release\__library_projects__\HockeySDK.AndroidBindings\library_project_imports\bin\classes.jar';'C:\Users\buildguest\AppData\Local\Xamarin\Xamarin.Android.Support.Animated.Vector.Drawable\23.3.0.0\embedded\classes.jar';'C:\Users\buildguest\AppData\Local\Xamarin\Xamarin.Android.Support.Design\23.3.0.0\embedded\classes.jar';'C:\Users\buildguest\AppData\Local\Xamarin\Xamarin.Android...
  java.io.IOException: Can't read [C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\MonoAndroid\v7.0\mono.android.jar] (Can't process class [android/app/ActivityTracker.class] (Unsupported class version number [52.0] (maximum 51.0, Java 1.7)))
    at proguard.InputReader.readInput(InputReader.java:230)
    at proguard.InputReader.readInput(InputReader.java:200)
    at proguard.InputReader.readInput(InputReader.java:178)
    at proguard.InputReader.execute(InputReader.java:78)
    at proguard.ProGuard.readInput(ProGuard.java:196)
    at proguard.ProGuard.execute(ProGuard.java:78)
    at proguard.ProGuard.main(ProGuard.java:492)
  Caused by: java.io.IOException: Can't process class [android/app/ActivityTracker.class] (Unsupported class version number [52.0] (maximum 51.0, Java 1.7))
    at 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.java:226)
    ... 6 more
  Caused by: java.lang.UnsupportedOperationException: Unsupported class version number [52.0] (maximum 51.0, Java 1.7)
    at proguard.classfile.util.ClassUtil.checkVersionNumbers(ClassUtil.java:140)
    at proguard.classfile.io.ProgramClassReader.visitProgramClass(ProgramClassReader.java:88)
    at proguard.classfile.ProgramClass.accept(ProgramClass.java:346)
    at proguard.io.ClassReader.read(ClassReader.java:91)
    ... 11 more
  Picked up JAVA_TOOL_OPTIONS:  -Dfile.encoding=UTF8
C:\Program Files (x86)\MSBuild\Xamarin\Android\Xamarin.Android.Common.targets(2025,3): Error MSB6006: "java.exe" exited with code 1.

person Boanerge    schedule 09.01.2017    source источник
comment
Вы используете размещенный агент сборки?   -  person Eddie Chen - MSFT    schedule 24.01.2017
comment
Да, и подробное сообщение об ошибке, которое я добавил к вопросу, просто показывает, когда я устанавливаю для переменной system.debug значение true, если я этого не делаю, то ошибка становится намного менее описательной.   -  person Boanerge    schedule 25.01.2017
comment
Я только что обновил Xamarin для Visual Studio, и proguard снова начал сбой на моем ПК, я проверил и обнаружил, что xamarin снова обновил proguard с более новой версии (~ 5.2) до более старой версии (4.7)   -  person Boanerge    schedule 25.01.2017


Ответы (2)


Я боюсь, что для вашей проблемы с Hosted Build Agent нет обходного пути, поскольку у пользователя нет разрешения на обновление установленного программного обеспечения на Hosted Machine.

Вам необходимо развернуть собственный агент сборки. а затем заменить файлы вручную.

person Eddie Chen - MSFT    schedule 26.01.2017

Причина в том, что он использует несовместимый JDK 1.7. Вы можете указать версию JDK шага сборки Xamarin:

введите здесь описание изображения

person starian chen-MSFT    schedule 09.01.2017
comment
Это то, что я сделал. Если я оставлю JDK 7, проект потерпит неудачу до того, как достигнет точки компиляции proguard, а когда я выберу JDK 8, попытка скомпилировать Proguard не удастся. На моем компьютере было то же самое, разница в том, что на моем компьютере я могу заменить Android SDK, который устанавливает xamarin, но в VSTS я не могу этого сделать. - person Boanerge; 10.01.2017
comment
@Boanerge Вы имеете в виду, что он по-прежнему выдает ту же ошибку при использовании JDK 8? Предоставьте подробное сообщение об ошибке здесь. (Сообщение об ошибке в исходном сообщении слишком простое) - person starian chen-MSFT; 16.01.2017
comment
Я внес некоторые изменения в проект, позвольте мне откатить его, чтобы я мог снова воспроизвести ошибку... - person Boanerge; 21.01.2017