2017-01-09 5 views
2

VSTS와의 지속적인 통합을 사용하여 HockeyApps와 통합하려고하는 Xamarin Forms Project가 있습니다. 내 응용 프로그램은 Java 1.8을 사용하여 컴파일하고 ProGuard를 사용하여 android apk 파일을 축소합니다. 그러나 java가 응용 프로그램을 컴파일하려고하면 설치된 Proguard 버전이 Java 1.8과 호환되지 않습니다. 오류는 다음과 같습니다. ... [android/app/ActivityTracker.class] 클래스를 처리 할 수 ​​없습니다. 지원되지 않음 클래스 버전 번호 [52.0] 최대 51.0, 내 로컬 비주얼 스튜디오 설치에서 자바 1.7 ... , 나는VSTS - Xamarin Proguard 버전 및 JDK 1.8의 문제

누구는 방법을 알고 ... 그것은 자 마린은 최신 하나 5.x를 위해 설치 기본 난독 버전을 대체 fixed VSTS로 할 수 있습니까?

DETAILED 오류 :

_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. 
+0

호스트 된 빌드 에이전트를 사용하고 있습니까? –

+0

예, system.debug 변수를 true로 설정하면 질문에 추가 한 오류 오류 메시지가 표시됩니다. 그렇지 않으면 오류가 덜 구체적입니다. – Boanerge

+0

Visual Studio 용 Xamarin을 방금 업데이트했습니다. proguard가 내 PC에서 다시 실패하기 시작했다면 xamarin이 새 버전 (~ 5.2)에서 이전 버전 (4.7)으로 proguard를 다시 업데이트했음을 확인하고 발견했습니다. – Boanerge

답변

1

나는 사용자가 호스트에 설치된 소프트웨어를 업데이트 할 수있는 권한이 없기 때문에 호스팅 빌드 에이전트와 문제에 대한 해결 방법이없는 것을 두려워 기계.

deploy your own build agent이 필요하고 파일을 수동으로 바꿉니다.

1

이유는 호환되지 JDK 1.7를 사용한다는 것이다. 당신은 구축 단계를 자 마린의 JDK 버전을 지정할 수 있습니다

enter image description here

+0

그랬습니다. JDK 7을 종료하면 프로젝트가 proguard 컴파일 시점에 도달하기 전에 실패하고 JDK 8을 선택하면 Proguard를 컴파일하는 데 실패합니다. 그것은 내 컴퓨터에서 동일했습니다, 다른 점은 내 컴퓨터에서 xamarin이 설치하는 android SDK를 대체 할 수 있지만 VSTS에서는 할 수 없다는 것입니다. – Boanerge

+0

@Boanerge JDK 8을 사용하는 경우에도 여전히 동일한 오류가 발생합니다. 여기에 자세한 오류 메시지를 제공하십시오. (원래 게시물의 오류 메시지는 너무 간단합니다.) –

+0

프로젝트에 약간의 수정을가 했으므로 다시 롤백하여 오류를 다시 재현 할 수 있습니다 ... – Boanerge