Az önce Android Studio 2.1'e geçtim ve daha önce çalışmakta olan bir uygulamayı derlemeye çalışırken bu hata ortaya çıktı:
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 kod üretimini zorlamak için ana projenin gradle.build dosyasını zaten güncellemiştim:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.1.0'
apply plugin: 'java'
sourceCompatibility = 1.7
targetCompatibility = 1.7
}
}
Java sürümünü ayarlamak için gradle.build modülünü de şu şekilde güncelledim:
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 ile inşa edilen alt modül. Pom.xml dosyasında ayrıca 1.7 kod üretimini zorlamaya çalıştım.
Alt modülleri içeren bir derleme yapısı kullandığımı anlıyorum, ancak alt modüllerin hiçbirini değiştirmedim ve modül için ortaya çıkan .jar dosyası son derlememde iyi çalıştı.
<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>
Sorum: 1) Bu bir Android Studio 2.1 sorunu mu? Başkaları gördü mü? 2) Bunun benim hatam olduğunu varsayarsak ve hata mesajı bozuk modülü bulmaya yardımcı olmadığından, V52 kodunu bulma konusunda herhangi bir öneri var mı? Büyük miktarda kodu bozmadan kitaplıkları atlayamam. Kod revizyonunu bulmak için bir .jar dosyası incelenebilir mi? Şimdiden teşekkürler. -Hephaestus