it-swarm.com.ru

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

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

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

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

175
simekadam

Поддержка 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. +.

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

ссылка на Android руководство пользователя подключаемого модуля Gradle

Ссылка, чтобы увидеть, чем отличаются источник от цели

285
Sergii Pechenizkyi

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

Project Structure screen of Android Studios 1

72
Simon

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

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

enter image description here

14
San

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

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

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

8
Elye

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

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

5
kunal

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

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

4
blalasaadri

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

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

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

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

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

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

compileSdkVersion 23

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

2
DenisKolodin