Кордова строит изменения distributionUrl в файле gradle -wrapper.properties

Я продолжаю получать следующее исключение сборки при запуске

 cordova run android --verbose
  • Что пошло не так: Возникла проблема оценки корневого проекта "андроид".

    Не удалось применить плагин [id 'android'] Gradle требуется версия 2.10. Текущая версия - 2.2.1. Если используется оболочка Gradle, попробуйте отредактировать дистрибутивUrl в C:\Users\Project\gradle\wrapper\gradle -wrapper.properties до gradle -2.10-all.zip

Причиной этого является изменение строки, когда я запускаю команду сборки cordova;

distributionUrl=http\://services.gradle.org/distributions/gradle-2.1.0-all.zip

к

distributionUrl=http\://services.gradle.org/distributions/gradle-2.2.1-all.zip

Как предотвратить это?

Ответ 1

Как можно было догадаться, существует script, который запускается за сценой, когда вы выходите из команды "Build and Build". Этот script должен быть найден, чтобы увидеть конфигурацию, указанную для версии Gradle.

Вы должны пойти и проверить следующий файл js:

$PROJECT_ROOT/platforms/android/cordova/lib/builders/GradleBuilder.js

Затем найдите строку, включающую в файл следующую переменную:

GradleBuilder.prototype.prepEnv

И проверьте переменную distributionUrl:

var distributionUrl = process.env['CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL'] || 'http\\://services.gradle.org/distributions/gradle-2.2.1-all.zip';

Что вы ищете и что вам нужно изменить на gradle -2.10-all.zip URL;

Теперь вы можете запустить команду сборки, и там вы идете!

вдохновлен следующим SO; установить Gradle для использования в кордове buildroid

Ответ 2

Я думаю, лучше экспортировать переменную CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL

Пример:

export
CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL=http\\://services.gradle.org/distributions/gradle-2.14.1-all.zip

Если вы используете Mac, например, добавьте команду export в .bash_profile

nano ~/.bash_profile

Ответ 3

ОБНОВЛЕНИЕ: 21 мая 2017 г.

Хорошо, это была очень неприятная проблема, и я чувствовал себя вынужденным написать полные инструкции, чтобы исправить в надежде, что это спасет других в часы, которые я потратил на это. Ниже приведена комбинация поиска в googling, чтения принятого ответа и работы из проб и ошибок.

Прежде чем делать что-либо еще, убедитесь, что вы закрыли Docker, если он запущен. Симптомом является то, что в Android Studio диалоговое окно загрузки эмулятора просто исчезает. Если вы использовали команду запуска приложения, ваше приложение просто осталось ждать, чтобы подключиться к устройству (сообщение было выпущено).

Предполагая, что вы сделали это и все еще не работаете, читайте дальше.

Необязательный (возможно): только fyi. Лично я использовал SDK Man для установки соответствующей версии Gradle на моей машине.

Предположим, что у вас уже есть рабочий эмулятор Android Studio с Marshmallow или Nougat (или обоими). ​​

В моем случае я пытался заставить Кордову работать.

В зависимости от того, хотите ли вы начать (рекомендуется), выполните следующие действия:

cordova platform rm android
cordova platform add android

Сначала требуется загрузка. Загрузите следующее в соответствии с вашей ОС:

https://dl.google.com/android/repository/tools_r25.2.3-windows.zip

https://dl.google.com/android/repository/tools_r25.2.5-linux.zip

(я работал на Mac, поэтому скачал:)

https://dl.google.com/android/repository/tools_r25.2.5-macosx.zip

Разархивируйте его и скопируйте папку templates в /Users/arcseldon/Library/Android/sdk/tools

Объяснение: См. логику внутри функции module.exports.check_gradle, объявленной в platforms/android/cordova/check_reqs.js, чтобы понять, как она пытается получить путь для оболочки Gradle. Это согласуется с этим.

$ echo $ANDROID_HOME
/Users/arcseldon/Library/Android/sdk

Я мог видеть подкаталог tools, но внутри него не было templates. Скопируйте папку templates из загруженного и извлеченного почтового индекса и вставьте ее внутри $ANDROID_HOME/tools

Вы должны закончить иерархию путей, которая включает в себя:

/Users/arcseldon/Library/Android/sdk/tools/templates/gradle/wrapper 

Теперь это удовлетворяет поиску путей с точки зрения script.

Во-вторых, проверьте ваше приложение cordova для платформ /android/build.gradle и выполните поиск gradleVersion.

task wrapper(type: Wrapper) { gradleVersion = '2.14.1' }

Для вашей версии загрузите с URL-адреса следующим образом:

https://services.gradle.org/distributions/gradle-X.Y.Z-all.zip

заменяя X, Y, Z по мере необходимости, чтобы соответствовать вашей версии.

В моем случае

https://services.gradle.org/distributions/gradle-2.14.1-all.zip

другие примеры:

https://services.gradle.org/distributions/gradle-3.3-all.zip https://services.gradle.org/distributions/gradle-2.4-all.zip

Затем, после загрузки, поместите на свой локальный диск и ссылку с помощью ENV. переменная. например. (переход на вашу версию)

export CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL=file:///Users/myusername/temp/gradle-2.14.1-all.zip

Объяснение: Если вы запустите поиск, вы обнаружите, что эта переменная среды является необязательным переопределением для этого env. переменная. См. Назначение переменной для check_gradle, объявленное в platforms/android/cordova/lib/builders/GradleBuilder.js

Теперь просто запустите:

cordova run android --verbose

Все идет хорошо, теперь все должно "работать" для Android. В моем случае, iOS был вне коробки - но я использовал Xcode 8.2 вместо Xcode 8.3 по другим причинам.

Ответ 4

Для решения проблемы вы можете попробовать следующее:

В Windows измените File -> Settings -> Builds,Execution,Deployment -> Build Tools -> Gradle -> Gradle home путь

В Mac OS, изменить Android Studio -> Preferences -> Builds,Execution,Deployment -> Build Tools -> Gradle -> Gradle home путь

Else использовать оболочку по умолчанию gradle и редактировать Project\gradle\wrapper\gradle-wrapper.properties file distributionUrl следующим образом:

distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip

Ответ 5

Попробуйте просто открыть файл-проект/платформы/android/build.gradle и обновить

зависимости {
      classpath 'com.android.tools.build:gradle:X.X.X'
}

и

обертка задач (тип: обертка) {
        gradleVersion = 'X.X'
}

см. ссылку здесь https://developer.android.com/studio/releases/gradle-plugin.html#updating-gradle

изменить X.X