Saya baru saja beralih ke Android Studio 2.1 dan kesalahan ini muncul ketika mencoba mengompilasi aplikasi yang sebelumnya berfungsi:
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.
Saya telah memperbarui file gradle.build proyek utama untuk memaksa pembuatan kode 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
}
}
Saya juga telah memperbarui modul gradle.build sebagai berikut untuk mengatur versi 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
}
}
Submodul sedang dibangun dengan Maven. Dalam file pom.xml saya juga mencoba memaksa pembuatan kode 1,7.
Saya memahami bahwa saya menggunakan artefak perakitan, yang menggabungkan modul bawahan, tetapi saya tidak mengubah salah satu modul bawahan dan file .jar yang dihasilkan untuk modul berjalan dengan baik terakhir kali saya menyusunnya.
<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>
Pertanyaan saya: 1) Apakah ini masalah Android Studio 2.1? Pernahkah orang lain melihatnya? 2) Dengan asumsi ini adalah kesalahan saya dan karena pesan kesalahan tidak memberikan bantuan dalam menemukan modul yang buruk, apakah ada rekomendasi untuk menemukan kode V52? Saya tidak bisa begitu saja menghilangkan pustaka tanpa merusak sejumlah besar kode. Bisakah seseorang memeriksa file .jar untuk menemukan revisi kode? Terima kasih sebelumnya. -Hephaestus
sumber
Jawaban:
cukup gunakan java 1.8 dengan Android Studio 3.0+ dan setel yang berikut ini berfungsi untuk saya: sepertinya perlu alat versi terbaru
dan
sumber
android.dexOptions.incremental
Properti ini tidak digunakan lagi dan tidak berpengaruh pada proses build".Jika Anda memiliki modul dengan pustaka java yang bukan khusus Android , ini seharusnya berfungsi:
apply plugin:'java'
Letakkan di bagian atas file build.gradle, lalu buat kembali.
sumber
Jika Anda menggunakan
org.jetbrains:annotation:15
plugin dan retrolambda maka hapus bariscompile org.jetbrains:annotations:15.0
dari Andabuild.gradle
dan kesalahan akan hilang. Ini bekerja untuk saya.sumber
Mungkin, beberapa dependensi Anda telah dikompilasi dengan Java 8, bukan untuk Android khususnya. Coba alihkan dependensi itu ke versi yang lebih lama. Saya tidak tahu persis library mana yang harus Anda downgrade, karena Anda belum melampirkan daftar dependensi modul utama Anda.
Misalnya: Saya punya masalah yang sama. Setelah berjam-jam mencari, saya menemukan bahwa perpustakaan
org.codehaus.httpcache4j.uribuilder:2.0.0
membutuhkan Java 8, pada github . Jadi, ketika saya beralih ke1.1.0
, proyek telah berhasil dibangun dan diterapkan.sumber
Coba tambahkan ke build.gradle utama di bagian allprojects
atau tambahkan ini dalam dependensi
di semua modul secara manual
sumber
Saya dapat menyelesaikan masalah ini dengan menambahkan baris berikut:
ke
defaultConfig
dalambuild.gradle
file.Anda dapat mengikuti pedoman untuk Java 8 di tautan - https://developer.android.com/guide/platform/j8-jack.html
sumber
Saya memiliki masalah yang sama dengan ketergantungan greendao-generator. Saya salah menambahkan ketergantungan itu ke dalam build.gradle (
compile 'org.greenrobot:greendao-generator:3.1.0'
) saya dan AndroidStudio menunjukkan pesan kesalahan yang sama.Mungkin karena modul itu telah dikompilasi dengan Java 8.
Jadi saya menghapus ketergantungan itu dari build.gradle saya dan semua dikompilasi dengan senang hati :)
sumber
Saya memecahkan masalah ini seperti di bawah ini:
sumber
Mematikan Instant Run di Android Studio 2.2 dengan plugin Gradle 2.2.2 memperbaikinya untuk saya. Beralih kembali ke versi lama plugin Gradle (seperti 2.2.0) juga memperbaikinya, tetapi imho kurang diinginkan.
sumber
Ini terjadi pada saya dengan Android Studio 2.3.3. Solusi yang saya temukan adalah menghapus folder build dan kemudian Rebuild Project . Sesederhana itu.
sumber
Saya juga menghadapi kesalahan yang sama
Android 2.3.3
, setelah menambahkan beberapa depensi JAR. Masalahnya karena depenecyio.netty:netty-all:4.1.16.Final
. JAR versi 4.1.16 ini dikompilasi dengan Java 1.8 dan yang lainnya dibuat dengan Java 1.7.Ini bisa diselesaikan, setelah menyertakan versi yang lebih lama
netty
(yang dibuat dengan Java 1.7) dibuild.gradle
file saya .compile 'io.netty:netty-all:4.1.5.Final'
sumber
Saya telah menemukan masalah ini saat mencoba meningkatkan ke nilai otomatis v 1.5 di Android Studio v 2.3.3. Nilai otomatis 1.5 mungkin akan kompatibel dengan AS 3 (Ini membutuhkan kompiler java yang diperbarui)
Untuk saat ini nilai otomatis 1.4.1 berfungsi.
sumber
Saya menghadapi masalah yang sama dengan Perpustakaan API Lokasi Reaktif untuk Android dan RxJava 2. Cukup perbarui build.gradle ke 3.0.1 dan kurangi Perpustakaan API Lokasi Reaktif untuk Android dan versi perpustakaan RxJava 2 dari 1.0.4 menjadi 1.0.3 Ini berfungsi dengan baik dalam kasus saya.
sumber
Saya telah menemukan masalah ini saat mencoba mengimpor jar yang dikompilasi oleh jdk 1.8 di Android Studio 3.0. Saya mencoba semua solusi di atas, tetapi tidak ada yang berhasil. jadi, saya meminta pengembang jar itu untuk mengkompilasinya ulang dengan jdk 1.7, dan kemudian bekerja dengan baik, tidak menemukan masalah ini lagi.
sumber
Jika memungkinkan untuk Anda:
Ini harus mengatasi masalah tersebut.
Referensi: https://developer.android.com/studio/write/java8-support
sumber