Як встановити -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.

Я спробував встановити змінну JAVA_HOME env до цього:

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

Помилка не минає. Як усунути помилку?


Ви sourceCompatibilityвстановили у своєму build.gradle?
fge

Підтримка Java 7 була додана в інструментах збирання 19. Перевірте мою відредаговану відповідь.
Сергій Печенізький

Відповіді:


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 0.6. +.

Зауважте, що лише для спроб використання ресурсів потрібно minSdkVersion19. Інші функції працюють на попередніх платформах.

Посилання на керівництво користувача плагіну для android gradle

Посилання, щоб побачити, чим відрізняються джерело від цілі


1
Чи працює це лише в студії Android або чи можна зробити цю роботу також у Eclipse за допомогою ADT?
Natix

1
Це можливо за допомогою останнього ADT для Eclipse. Перевірте повний опис тут: sites.google.com/a/android.com/tools/recent/…
Сергій Печенізький,

7
woohoo для струнних комутаторів!
кодер

10
Зауважте, що пробні ресурси можна використовувати лише з API 19 або новішої версії.
Алекс Локвуд

73

Можливо, ці відповіді вище старі, але з новою Android Studios 1 ви зробите наступне, щоб побачити модуль, який працює на 1.7 (або 1.6, якщо вам зручніше). Клацніть Файл -> Структура проекту. Виберіть модуль, який потрібно запустити, а потім у розділі "Сумісність із джерелами" та "Цільова сумісність" виберіть 1.7. Натисніть "ОК".

Екран структури проекту Android Studios 1


5
Я думаю, це правильна відповідь для останньої андроїд-студії. Бажаю, щоб я міг зробити це також правильною відповіддю ..
pravin

1
Це по суті те саме, що прийнята відповідь.
Керем

1
Це просто зручність, вона буде вставляти описаний раніше код "compileOptions" у файл gradle.
user3259330

Як я можу встановити це на 8?
Неонова війна

Я не бачу 1.8 і 1.9? Навіть незважаючи на те, що About -> Help каже, що Android-студія використовує 1,8 JRE.
Шрікар Редді

14

Ви можете змінити його в новій версії студії Android (0.8.X)

FIle-> Other Settings -> Settings за замовчуванням -> Compiler (Розгорніть його, натиснувши стрілку вліво) -> Java Compiler -> Ви можете змінити версію байтового коду Project тут

введіть тут опис зображення


8

Останні Android Studio 1.4.

Клацніть Файл-> Структура проекту-> Місце SDK-> Місце розташування JDK.

Ви також можете встановити сумісність індивідуального модуля версії JDK, перейшовши в Модуль (нижче SDK Location) і відповідно відредагувати сумісність джерела. (зауважте, це стосується лише модуля Android).


Цей параметр є заплутаним, оскільки впливає на всі проекти, навіть якщо він названий "Структура проекту".
Олівер Хауслер

5

Клацніть правою кнопкою миші на вашому проекті> Відкрити налаштування модуля> Виберіть "Проект" у розділі "Налаштування проекту"

Змініть пакет програм SDK на останній (може бути API 21) та рівень мови проекту на 7+


4

Наразі Android не підтримує Java 7, лише Java 6. Нові функції в Java 7, такі як синтаксис алмазів, наразі не підтримуються. Пошук джерел для підтримки цього непростий, але я міг виявити, що двигун Dalvic побудований на підмножині Apache Harmony, яка підтримувала Java лише до версії 6. І якщо ви перевірите системні вимоги для розробки програм для Android, це також зазначає що потрібен принаймні JDK 6 (хоча це, звичайно, не є реальним доказом, а лише вказівкою). І це говорить майже так само, як і я. Якщо я знайду щось більш суттєве, я додам його.

Редагувати: Здається, підтримка Java 7 була додана з моменту, коли я написав цю відповідь; перевірити відповідь Сергія Печенізького .


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
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.