Подтвердить что ты не робот

Переопределить версию Java при создании проекта Cordova с помощью gradle

Я пытаюсь построить проект Cordova с помощью gradle в качестве инструмента построения. В проекте Cordova у меня есть собственный плагин, который требует Java 1.7.

В build.gradle, который поставляется с Cordova, версия java - 1.6. build.gradle:

android {
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_6
        targetCompatibility JavaVersion.VERSION_1_6
    }
}

В build.gradle есть большое предупреждение, в котором говорится, что это сгенерированный файл, который нельзя редактировать, способ настройки шага сборки gradle - как я понимаю - для создания build-extras.gradle файл.

Я создал файл build-extras.gradle и попробовал следующее:

android {
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }
}

Но это не работает. Я все еще получаю сообщение об ошибке при создании моего проекта.

Ошибка:

> strings in switch are not supported in -source 1.6
>         switch (action) {
>                 ^   (use -source 7 or higher to enable strings in switch)

Может кто-нибудь, пожалуйста, помогите мне выяснить, как настроить gradle, чтобы сделать эту работу?

4b9b3361

Ответ 1

Я пытался решить ту же проблему и пришел сюда, надеясь найти ответ! Во всяком случае, хотя ответа не было, ваше упоминание о build-extras.gradle поставило меня на правильный путь, и теперь для меня теперь работает следующее... так спасибо.

Для начала я подумал, что могу попробовать использовать тот же синтаксис, что и вы, чтобы попытаться выяснить, что было не так. Насколько я могу сказать, он терпит неудачу, потому что файл build-extras.gradle не магически слит в build.gradle, но вместо этого загружается и выполняется с использованием подхода Gradle apply from. И так как это происходит до закрытия android, это слишком рано в этом процессе, и эти значения android переопределяют наши "дополнительные" значения.

(У меня нет времени, чтобы вникать больше, чем мне нужно, в Gradle или Groovy, поэтому извиняюсь, если моя терминология не точна...)

Однако я мог бы заставить его работать, если я использовал метод postBuildExtras().

Если вы посмотрите на нижнюю часть файла build.gradle, созданного Кордорой, вы увидите, что если такой метод (т.е. postBuildExtras) существует на ext, тогда он вызывается. Поскольку это последнее в конфигурации script, то я думаю, что точка этого метода заключается в том, что мы можем использовать его для переопределения чего-либо.

Поэтому я оказался в этом как build-extras.gradle:

ext.postBuildExtras = {
    android {
        compileOptions {
            sourceCompatibility JavaVersion.VERSION_1_7
            targetCompatibility JavaVersion.VERSION_1_7
        }
    }
}

У меня на самом деле работала довольно рано в моих исследованиях, но продолжала пробовать другие подходы, так как я подозреваю, что этот метод потерпит неудачу, когда мы попытаемся иметь несколько файлов build-extras.gradle, которые, учитывая, что мы оба говорим конкретно о плагинах Кордовы, очень вероятно.

Существует технология, которая выглядит многообещающей для плагинов, которая заключается в использовании элемента <framework> в plugin.xml, но при таком подходе я никогда не смог получить модуль-модуль для загрузки/импорта/независимо. Я еще раз посмотрю на это, когда я доберусь до плагина № 2, но теперь описанная выше техника дает мне большой скачок дальше, где я был этим утром, поэтому снова спасибо за подсказку build-extras.gradle.;)

Ответ 2

Что касается ответа Марка, я получил решение добавить build-extras.gradle в файл plugin.xml. Поэтому он будет автоматически добавлен в папку платформы в нужном месте.

<source-file src="src/android/lib/build-extras.gradle" target-dir="src/.." />

Ответ 3

Следующие строки были найдены и обновлены.

compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_6
        targetCompatibility JavaVersion.VERSION_1_6
    } 

в

compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }

Суть в том, чтобы изменить файл build.gradle, который находится в следующей папке \platforms\android\ но имейте в виду, что также представлены другие файлы build.gradle с другими путями.