Как установить -source 1.7 в Android Studio и Gradle

У меня возникает следующая ошибка при попытке скомпилировать мой проект в 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

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

Ответ 1

Поддержка Java 7 была добавлена ​​в средства сборки 19. Теперь вы можете использовать такие функции, как оператор бриллианта, многопользовательский режим, 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. +.

Обратите внимание, что только попробовать с ресурсами требуется minSdkVersion 19. Другие функции работают на предыдущих платформах.

Ссылка на руководство пользователя android gradle

Ссылка, чтобы увидеть, как разные цели источника и цели

Ответ 2

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

Project Structure screen of Android Studios 1

Ответ 3

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

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

enter image description here

Ответ 4

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

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

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

Ответ 5

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

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

Ответ 6

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

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

Ответ 7

Перейдите в свой Gradle и найдите sourceCompatibility и измените его с 1.6 на 7. Это работало для меня хотя бы.

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

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

Это приведет к созданию следующего кода в вашем Gradle:

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_7
    targetCompatibility JavaVersion.VERSION_1_7
}

Ответ 8

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

compileSdkVersion 23

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