Cara mengatur -sumber 1.7 di Android Studio dan Gradle

177

Saya mendapatkan kesalahan berikut saat mencoba mengompilasi proyek saya di Android Studio:

Gradle: error: diamond operator is not supported in -source 1.6

Saya telah menetapkan 1,7 sebagai target dalam semua preferensi proyek yang saya temukan. Juga jalur yang ditampilkan dalam proyek SDK di bawah 1,7 SDK adalah jalur yang benar untuk instalasi java 1.7.

Bahkan ketika saya menjalankan java -versi di terminal, ia memberitahu saya bahwa saya menjalankan java 1.7.

Saya telah mencoba mengatur variabel env JAVA_HOME untuk ini:

/Library/Java/JavaVirtualMachines/jdk1.7.0_25.jdk/Contents/Home

Kesalahan tidak hilang. Bagaimana cara menghilangkan kesalahan?

simekadam
sumber
Apakah Anda telah sourceCompatibilitymenetapkan di build.gradle Anda?
fge
Dukungan Java 7 ditambahkan di build tools 19. Silakan, periksa jawaban saya yang diedit.
Sergii Pechenizkyi

Jawaban:

289

Dukungan Java 7 ditambahkan di build tools 19. Sekarang Anda dapat menggunakan fitur seperti operator berlian, multi-catch, coba-dengan-sumber daya, string dalam sakelar, dll. Tambahkan yang berikut ke Anda build.gradle.

android {
    compileSdkVersion 19
    buildToolsVersion "19.0.0"

    defaultConfig {
        minSdkVersion 7
        targetSdkVersion 19
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }
}

Gradle 1.7+, plugin Android gradle 0.6. + Diperlukan.

Catatan, yang hanya mencoba sumber daya memerlukan minSdkVersion19. Fitur lainnya berfungsi pada platform sebelumnya.

Tautan ke panduan pengguna plugin Android gradle

Tautan untuk melihat perbedaan antara sumber dan target

Sergii Pechenizkyi
sumber
1
Apakah ini hanya berfungsi di Android Studio atau mungkinkah membuat ini berfungsi juga di Eclipse with ADT?
Natix
1
Mungkin dengan ADT terbaru untuk Eclipse. Periksa deskripsi lengkap di sini: sites.google.com/a/android.com/tools/recent/…
Sergii Pechenizkyi
7
Woohoo untuk switch string!
coder
10
Perhatikan bahwa coba-dengan-sumber daya hanya dapat digunakan dengan API 19 atau lebih tinggi.
Alex Lockwood
73

Mungkin jawaban-jawaban di atas sudah lama tetapi dengan Android Studios 1 yang baru, Anda melakukan yang berikut untuk melihat modul berjalan pada 1,7 (atau 1,6 jika Anda mau). Klik File -> Struktur Proyek. Pilih modul yang ingin Anda jalankan dan kemudian di bawah "Kompatibilitas Sumber" dan "Kompatibilitas Target", pilih 1.7. Klik "OK".

Layar Struktur Proyek Android Studios 1

Simon
sumber
5
Saya kira ini jawaban yang benar untuk android-studio terbaru. Seandainya saya bisa membuat ini juga jawaban yang benar ..
pravin
1
Ini pada dasarnya sama dengan jawaban yang diterima.
Kerem
1
Ini hanya fitur kenyamanan, itu akan memasukkan kode "compileOptions" yang dijelaskan sebelumnya ke file gradle.
user3259330
Bagaimana saya bisa mengatur ini ke 8?
Neon Warge
Saya tidak bisa melihat 1,8 dan 1,9? Meskipun Bantuan Tentang -> mengatakan bahwa studio Android menggunakan 1,8 JRE.
Srikar Reddy
14

Anda dapat mengubahnya dalam versi Android studio baru (0.8.X)

FIle-> Pengaturan Lainnya -> Pengaturan Default -> Compiler (Perluas dengan mengklik panah kiri) -> Java Compiler -> Anda dapat mengubah versi bytecode Project di sini

masukkan deskripsi gambar di sini

San
sumber
8

Studio Android Terbaru 1.4.

Klik File-> Struktur Proyek-> Lokasi SDK-> Lokasi JDK.

Anda juga dapat mengatur kompatibilitas modul JDK Versi individu dengan masuk ke Modul (di bawah Lokasi SDK), dan mengedit Kompatibilitas Sumber sesuai. (catatan, ini hanya berlaku untuk Modul Android).

Elye
sumber
Pengaturan ini membingungkan, karena memengaruhi semua proyek, meskipun dinamai "Struktur Proyek".
Oliver Hausler
5

Klik kanan pada proyek Anda> Buka Pengaturan Modul> Pilih "Proyek" di bagian "Pengaturan Proyek"

Ubah SDK Proyek ke terbaru (mungkin API 21) dan tingkat bahasa Proyek menjadi 7+

kunal
sumber
4

Saat ini, Android tidak mendukung Java 7, hanya Java 6. Fitur-fitur baru di Java 7 seperti sintaks intan saat ini tidak didukung. Mencari sumber untuk mendukung ini tidak mudah, tetapi saya dapat menemukan bahwa mesin Dalvic dibangun di atas subset Apache Harmony yang hanya pernah mendukung Java hingga versi 6. Dan jika Anda memeriksa persyaratan sistem untuk mengembangkan aplikasi Android, ia juga menyatakan bahwa setidaknya JDK 6 diperlukan (meskipun ini tentu saja bukan bukti nyata, hanya indikasi). Dan ini mengatakan hampir sama dengan yang saya miliki. Jika saya menemukan sesuatu yang lebih subtansial, saya akan menambahkannya.

Sunting: Tampaknya dukungan Java 7 telah ditambahkan sejak saya awalnya menulis jawaban ini; periksa jawabannya oleh Sergii Pechenizkyi .

blalasaadri
sumber
2
Di sini, pertanyaan serupa dengan tautan tentang cara mengatasi masalah: stackoverflow.com/questions/14487682/…
blalasaadri
2

Selalu gunakan versi SDK terbaru untuk membangun:

compileSdkVersion 23

Itu tidak mempengaruhi perilaku runtime , tetapi memberi Anda fitur pemrograman terbaru.

DenisKolodin
sumber
2

Pergilah ke Gradle Anda dan cari sourceCompatibility dan ubahlah dari 1,6 menjadi 7 . Setidaknya itu berhasil bagi saya.

Anda juga dapat masuk ke pengaturan modul Anda dan mengatur Kompatibilitas Sumber / Target ke 1.7.

Jendela pengaturan modul

Itu akan menghasilkan kode berikut di Gradle Anda:

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_7
    targetCompatibility JavaVersion.VERSION_1_7
}
Feorice
sumber