Как установить -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-версию в терминале, она говорит мне, что я работаю на Java 1.7.

Я попытался установить переменную JAVA_HOME env в это:

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

Ошибка не уходит. Как устранить ошибку?

simekadam
источник
Вы sourceCompatibilityустановили в свой build.gradle?
fge
Поддержка Java 7 была добавлена ​​в инструменты сборки 19. Пожалуйста, проверьте мой отредактированный ответ.
Сергей Печеницкий,

Ответы:

289

Поддержка Java 7 была добавлена ​​в инструменты сборки 19. Теперь вы можете использовать такие функции, как оператор diamond, multi-catch, try-with-resources, строки в коммутаторах и т. Д. Добавьте следующее к своему 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 Studio или можно сделать это также в Eclipse с ADT?
Натикс
1
Это возможно с последним ADT для Eclipse. Проверьте полное описание здесь: sites.google.com/a/android.com/tools/recent/…
Сергей
7
вау для строковых ключей!
кодер
10
Обратите внимание, что try-with-resources может использоваться только с API 19 или выше.
Алекс Локвуд
73

Возможно, эти ответы выше, но с новыми Android Studios 1, вы делаете следующее, чтобы увидеть модуль для работы на 1.7 (или 1.6, если хотите). Нажмите Файл -> Структура проекта. Выберите модуль, который вы хотите запустить, а затем в разделе «Совместимость исходного кода» и «Целевая совместимость» выберите 1.7. Нажмите «ОК».

Экран структуры проекта Android Studios 1

Саймон
источник
5
Думаю, это правильный ответ для последней андроид-студии. Хотелось бы, чтобы это тоже был правильный ответ ..
Правин
1
Это по сути то же самое, что и принятый ответ.
Керем
1
Это просто удобная функция, она вставит ранее описанный код "compileOptions" в файл Gradle.
user3259330
Как я могу установить это до 8?
Neon Warge
Я не вижу 1,8 и 1,9? Хотя в справке About -> Help говорится, что Android-студия использует 1.8 JRE.
Срикар Редди
14

Вы можете изменить его в новой версии Android Studio (0.8.X)

Файл-> Другие настройки -> Настройки по умолчанию -> Компилятор (разверните его, нажав стрелку влево) -> Компилятор Java -> Вы можете изменить версию байт-кода проекта здесь

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

Сан -
источник
8

Последняя версия Android Studio 1.4.

Нажмите Файл-> Структура проекта-> Местоположение SDK-> Местоположение JDK.

Вы также можете установить совместимость версии JDK для отдельного модуля, перейдя в модуль (под расположением SDK), и соответственно отредактировать совместимость исходного кода. (обратите внимание, это относится только к модулю Android).

Elye
источник
Этот параметр сбивает с толку, поскольку он влияет на все проекты, даже если он называется «Структура проекта».
Оливер Хауслер
5

Щелкните правой кнопкой мыши по вашему проекту> Откройте «Настройка модуля»> выберите «Проект» в разделе «Настройка проекта».

Измените Project SDK на последний (может быть API 21) и уровень языка проекта на 7+

Кунал
источник
4

В настоящее время Android не поддерживает Java 7, только Java 6. Новые функции в Java 7, такие как синтаксис diamond, в настоящее время не поддерживаются. Найти источники для поддержки этого нелегко, но я мог бы обнаружить, что движок Dalvic построен на подмножестве Apache Harmony, которое когда-либо поддерживало Java до версии 6. И если вы проверяете системные требования для разработки приложений Android, в нем также говорится что нужен как минимум JDK 6 (хотя это, конечно, не реальное доказательство, а просто указание). И это говорит о том же, что и я. Если я найду что-то более существенное, я добавлю это.

Редактировать: Кажется, поддержка Java 7 была добавлена, так как я первоначально написал этот ответ; Проверь ответ Сергея Печеницкого .

blalasaadri
источник
2
Вот аналогичный вопрос со ссылкой на то, как преодолеть проблему: stackoverflow.com/questions/14487682/…
blalasaadri
2

Всегда используйте последнюю версию SDK для сборки:

compileSdkVersion 23

Это не влияет на поведение во время выполнения , но дает вам новейшие возможности программирования.

Колодин
источник
2

Зайдите в свой Gradle и найдите sourceCompatibility и измените его с 1.6 на 7 . Это работало для меня по крайней мере.

Вы также можете зайти в настройки вашего модуля и установить для Source / Target Compatibility значение 1.7.

Окно настроек модуля

Это даст следующий код в вашем Gradle:

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_7
    targetCompatibility JavaVersion.VERSION_1_7
}
Feorice
источник