방금 Android Studio 2.1로 전환했는데 이전에 작동하던 앱을 컴파일하려고 할 때이 오류가 표시되었습니다.
Error:Error converting bytecode to dex: Cause: Dex cannot parse version 52 byte code. This is caused by library dependencies that have been compiled using Java 8 or above. If you are using the 'java' gradle plugin in a library submodule add targetCompatibility = '1.7' sourceCompatibility = '1.7' to that submodule's build.gradle file.
Java 1.7 코드 생성을 강제하기 위해 기본 프로젝트의 gradle.build 파일을 이미 업데이트했습니다.
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.1.0'
apply plugin: 'java'
sourceCompatibility = 1.7
targetCompatibility = 1.7
}
}
또한 java 버전을 설정하기 위해 다음과 같이 gradle.build 모듈을 업데이트했습니다.
android {
compileSdkVersion 19
buildToolsVersion "23.0.2"
defaultConfig {
applicationId "com.abc.def"
minSdkVersion 19
targetSdkVersion 19
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
}
Maven으로 빌드되는 서브 모듈. pom.xml 파일에서 1.7 코드 생성을 강제로 시도했습니다.
하위 모듈을 통합하는 어셈블리 아티팩트를 사용하고 있지만 하위 모듈을 변경하지 않았으며 마지막으로 컴파일 할 때 모듈의 결과 .jar 파일이 제대로 실행되었음을 이해합니다.
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId> <!-- maven-compiler-plugin -->
<version>2.6</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id> <!-- this is used for inheritance merges -->
<phase>package</phase> <!-- bind to the packaging phase -->
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
내 질문 : 1) Android Studio 2.1 문제입니까? 다른 사람들이 본 적이 있습니까? 2) 이것이 내 오류라고 가정하고 오류 메시지가 잘못된 모듈을 찾는 데 도움이되지 않기 때문에 V52 코드를 찾는 데 권장 사항이 있습니까? 많은 양의 코드를 깨지 않고 라이브러리를 생략 할 수는 없습니다. .jar 파일을 검사하여 코드 개정판을 찾을 수 있습니까? 미리 감사드립니다. -헤파이스토스