Tôi vừa chuyển sang Android Studio 2.1 và lỗi này xuất hiện khi cố gắng biên dịch một ứng dụng đã hoạt động trước đó:
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.
Tôi đã cập nhật tệp gradle.build của dự án chính để buộc tạo mã Java 1.7:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.1.0'
apply plugin: 'java'
sourceCompatibility = 1.7
targetCompatibility = 1.7
}
}
Tôi cũng đã cập nhật module gradle.build như sau để đặt phiên bản java:
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
}
}
Mô-đun con đang được xây dựng với Maven. Trong tệp pom.xml, tôi cũng đã cố gắng buộc tạo mã 1.7.
Tôi hiểu rằng tôi đang sử dụng một cấu phần hợp ngữ, kết hợp các mô-đun cấp dưới, nhưng tôi đã không thay đổi bất kỳ mô-đun cấp dưới nào và tệp .jar kết quả cho mô-đun đã chạy tốt trong lần biên dịch trước.
<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>
Câu hỏi của tôi: 1) Đây có phải là sự cố Android Studio 2.1 không? Những người khác đã nhìn thấy nó? 2) Giả sử đây là lỗi của tôi và vì thông báo lỗi không giúp ích gì trong việc tìm kiếm mô-đun bị lỗi, có khuyến nghị nào về việc tìm mã V52 không? Tôi không thể bỏ qua các thư viện mà không phá vỡ một lượng lớn mã. Người ta có thể kiểm tra tệp .jar để tìm bản sửa đổi mã không? Cảm ơn trước. -Hephaestus