ฉันเพิ่งเปลี่ยนไปใช้ 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.
ฉันได้อัปเดตไฟล์ gradle.build ของโครงการหลักแล้วเพื่อบังคับให้สร้างโค้ด 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
}
}
ฉันได้อัปเดตโมดูล gradle.build แล้วด้วยเพื่อตั้งค่าเวอร์ชัน 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
}
}
โมดูลย่อยที่สร้างขึ้นด้วย 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 เพื่อค้นหาการแก้ไขโค้ดได้หรือไม่? ขอบคุณล่วงหน้า. - เฮเฟสตัส