Кордова строит изменения 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