วิธีการตั้งค่า -source 1.7 ใน Android Studio และ Gradle


177

ฉันได้รับข้อผิดพลาดต่อไปนี้เมื่อพยายามรวบรวมโครงการของฉันใน Android Studio:

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

ฉันมี 1.7 ชุดเป็นเป้าหมายในการกำหนดลักษณะโครงการทั้งหมดที่ฉันพบ เส้นทางที่แสดงใน SDK โครงการภายใต้ 1.7 SDK นั้นเป็นเส้นทางที่ถูกต้องในการติดตั้ง Java 1.7

แม้ตอนที่ฉันเรียกใช้ java -version ในเทอร์มินัลมันก็บอกฉันว่าฉันกำลังรันบน java 1.7

ฉันได้ลองตั้งค่าตัวแปร env JAVA_HOME เป็น:

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

ข้อผิดพลาดจะไม่หายไป ฉันจะกำจัดข้อผิดพลาดได้อย่างไร


คุณได้sourceCompatibilityตั้งค่าใน build.gradle ของคุณหรือไม่
fge

เพิ่มการรองรับ Java 7 ที่เครื่องมือสร้าง 19 โปรดตรวจสอบคำตอบที่แก้ไขของฉัน
Sergii Pechenizkyi

คำตอบ:


289

Java 7 สนับสนุนถูกเพิ่มเข้ามาสร้างเครื่องมือ 19. ตอนนี้คุณสามารถใช้คุณสมบัติเช่นผู้ประกอบการเพชรหลายจับลองที่มีทรัพยากรสตริงในสวิทช์ ฯลฯ 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+, Android gradle plugin 0.6. + จำเป็นต้องมี

โปรดทราบว่าการลองด้วยทรัพยากรต้องมีminSdkVersion19. คุณสมบัติอื่น ๆ ใช้งานได้บนแพลตฟอร์มก่อนหน้า

ลิงก์ไปยังคู่มือผู้ใช้ android gradle plugin

ลิงก์เพื่อดูความแตกต่างระหว่างต้นทางและปลายทาง


1
ใช้งานได้ใน Android Studio เท่านั้นหรือเป็นไปได้ที่จะทำให้สามารถทำงานใน Eclipse ด้วย ADT ได้หรือไม่
Natix

1
เป็นไปได้ด้วย ADT ล่าสุดสำหรับ Eclipse ตรวจสอบรายละเอียดทั้งหมดได้ที่นี่: sites.google.com/a/android.com/tools/recent/…
Sergii Pechenizkyi

7
เกี้ยวสำหรับสวิตช์สตริง!
coder

10
โปรดทราบว่าการลองใช้ทรัพยากรสามารถใช้ได้กับ API 19 หรือสูงกว่าเท่านั้น
Alex Lockwood

73

บางทีคำตอบข้างต้นอาจเก่า แต่ด้วย Android Studios 1 ใหม่คุณสามารถทำสิ่งต่อไปนี้เพื่อดูโมดูลที่จะทำงานบน 1.7 (หรือ 1.6 หากคุณต้องการ) คลิกไฟล์ -> โครงสร้างโครงการ เลือกโมดูลที่คุณต้องการเรียกใช้จากนั้นภายใต้ "ความเข้ากันได้ของแหล่งที่มา" และ "ความเข้ากันได้ของแหล่งข้อมูล" เลือก 1.7 คลิก "ตกลง"

หน้าจอโครงสร้างโครงการของ Android Studios 1


5
ฉันเดาว่านี่เป็นคำตอบที่ถูกต้องสำหรับ android-studio ล่าสุด หวังว่าฉันจะทำให้เรื่องนี้ยังเป็นคำตอบที่ถูกต้อง ..
Pravin

1
นี่เป็นหลักเหมือนกับคำตอบที่ยอมรับ
Kerem

1
มันเป็นเพียงฟีเจอร์อำนวยความสะดวกมันจะแทรกโค้ด "compileOptions" ที่อธิบายไว้ก่อนหน้านี้ลงในไฟล์ gradle
user3259330

ฉันจะตั้งค่านี้เป็น 8 ได้อย่างไร
Neon Warge

ฉันมองไม่เห็น 1.8 และ 1.9? ถึงแม้ว่า About -> Help บอกว่าสตูดิโอ Android ใช้ 1.8 JRE
Srikar Reddy

14

คุณสามารถเปลี่ยนได้ในเวอร์ชั่นสตูดิโอ Android ใหม่ (0.8.X)

FI--> การตั้งค่าอื่น ๆ -> การตั้งค่าเริ่มต้น -> คอมไพเลอร์ (ขยายโดยการคลิกลูกศรซ้าย) -> Java คอมไพเลอร์ -> คุณสามารถเปลี่ยนเวอร์ชั่นโครงการ bytecode ที่นี่

ป้อนคำอธิบายรูปภาพที่นี่


8

Android Studio 1.4 ล่าสุด

คลิกไฟล์ -> โครงสร้างโครงการ -> ตำแหน่ง SDK -> ตำแหน่ง JDK

คุณยังสามารถตั้งค่าความเข้ากันได้ของแต่ละโมดูลโมดูล JDK โดยไปที่โมดูล (ใต้ตำแหน่ง SDK) และแก้ไขความเข้ากันได้ของแหล่งที่มาตามลำดับ (หมายเหตุนี่ใช้ได้กับโมดูล Android เท่านั้น)


การตั้งค่านี้ทำให้เกิดความสับสนเนื่องจากจะมีผลกับโครงการทั้งหมดแม้ว่าจะมีชื่อว่า "โครงสร้างโครงการ"
Oliver Hausler

5

คลิกขวาที่โครงการของคุณ> เปิดการตั้งค่าโมดูล> เลือก "โครงการ" ในส่วน "การตั้งค่าโครงการ"

เปลี่ยน Project SDK เป็นล่าสุด (อาจเป็น API 21) และระดับภาษาของโครงการเป็น 7+


4

ในปัจจุบัน Android ไม่รองรับ Java 7 เพียง Java 6 ฟีเจอร์ใหม่ใน Java 7 เช่น syntax ข้าวหลามตัดจึงไม่รองรับในปัจจุบัน การค้นหาแหล่งข้อมูลเพื่อสนับสนุนสิ่งนี้ไม่ใช่เรื่องง่าย แต่ฉันสามารถค้นหาได้ว่าเครื่องมือ Dalvic นั้นสร้างขึ้นจากชุดย่อยของApache Harmonyซึ่งรองรับ Java รุ่นที่ 6 เท่านั้นและหากคุณตรวจสอบข้อกำหนดของระบบสำหรับการพัฒนาแอพ Android อย่างน้อยก็จำเป็นต้องใช้ JDK 6 (แม้ว่าหลักสูตรนี้จะไม่ใช่ข้อพิสูจน์ที่แท้จริง แต่เป็นสิ่งบ่งชี้) และนี่บอกว่าเหมือนกันกับที่ฉันมี หากฉันพบว่ามีข้อมูลทางการเงินมากกว่านั้นฉันจะเพิ่มเข้าไป

แก้ไข: ดูเหมือนว่ามีการเพิ่มการสนับสนุน Java 7 ตั้งแต่ฉันเขียนคำตอบนี้ ตรวจคำตอบโดยSergii Pechenizkyi


2
ต่อไปนี้เป็นคำถามที่คล้ายกันพร้อมลิงก์เกี่ยวกับวิธีแก้ไขปัญหา: stackoverflow.com/questions/14487682/ …
blalasaadri

2

ใช้ SDK รุ่นล่าสุดเสมอในการสร้าง:

compileSdkVersion 23

มันไม่ได้มีผลต่อพฤติกรรมการรันไทม์แต่ให้คุณมีคุณสมบัติการเขียนโปรแกรมล่าสุด


2

ไปลงใน Gradle คุณและมองหาsourceCompatibilityและเปลี่ยนจาก1.6ที่จะ7 ที่ทำงานให้ฉันอย่างน้อย

คุณยังสามารถเข้าสู่การตั้งค่าโมดูลและตั้งค่าความเข้ากันได้ของแหล่งที่มา / เป้าหมายเป็น 1.7

หน้าต่างการตั้งค่าโมดูล

ที่จะสร้างรหัสต่อไปนี้ใน Gradle ของคุณ:

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_7
    targetCompatibility JavaVersion.VERSION_1_7
}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.