Ответ 1
Для меня были решены следующие команды:
cordova platform remove android
cordova platform add android
ionic build android
Это решение вышеупомянутой ошибки, которую я хочу документировать. Я нашел другие подобные сообщения, но никто не описал, как эта ошибка может быть связана с Кордовой или Ионной.
Если вы не будете осторожны, может возникнуть несоответствие между версией Gradle, которую использует Android Studio, и версией Gradle, которую Cordova/cordova-android указывает в своем коде сгенерированного автоматически. Как вы знаете, бег
$ cordova platform add android
(или $ ionic platform add android
, если вы создаете приложение Ionic) создает собственный код приложения на-project/platform/android.
Внутри этой папки файл: /the-project/platforms/android/cordova/lib/builders/GradleBuilder.js экспортирует переменную, как показано ниже:
var distributionUrl = process.env['CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL'] || 'http\\://services.gradle.org/distributions/gradle-x.y-all.zip';
Где х и у зависит, какая версия Кордовы/кордовы-андроида используется для создания собственного кода приложения.
Когда вы запускаете
$ cordova build android
Версия Gradle, указанная в distributionUrl
var, является версией, используемой для сборки.
Теперь вот сложная часть. Когда вы импортируете проект в Android Studio, вы, скорее всего, получите сообщение, в котором настоятельно рекомендуется обновить Gradle до более новой версии, как показано ниже:
Если вы сделаете это, Android Studio загрузит новую версию Gradle и сохранит ее локально и настроит проект на использование недавно загруженного локального дистрибутива Gradle, который является вариантом радио ниже выбранной "Использовать оболочку класса по умолчанию", которая Я закончил отменять выбор, потому что это вызовет ошибки.
Это вызовет проблемы, поскольку Android Studio и Cordova теперь будут пытаться создать приложение с различными версиями Gradle, и вы получите ошибки сборки в Android Studio, а также с помощью
$ cordova build android
в командной строке. Решение с приложениями Cordova должно всегда включать в проект Android Studio "Использовать оболочку градиента по умолчанию" и игнорировать заманчивые сообщения для обновления. Если вы хотите использовать более новую версию Gradle, вы всегда можете изменить дистрибутив Url var в упомянутом выше файле (однако Cordova категорически не рекомендует изменять код в папке платформ, так как он легко перезаписывается). На момент написания этого я не могу сказать, есть ли способ установить версию Gradle на
$ cordova platform add android
шаг, то есть когда вы захотите сделать это, чтобы вы никогда не изменяли код внутри проектов/платформ
Для меня были решены следующие команды:
cordova platform remove android
cordova platform add android
ionic build android
Я хотел бы просто оставить это в качестве комментария, но я, по-видимому, недостаточно авторитетен...
После прочтения вашей документации я не смог решить проблему с вашим предложением оставить Android Studio "Использовать оболочку градации по умолчанию". Я обнаружил, что установка переменной сеанса CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL до сборки меня немного улучшила:
[email protected]:$ export CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL="https\://services.gradle.org/distributions/gradle-2.14.1-all.zip"
[email protected]:$ cordova build android
Следующее, что мне нужно было сделать, это отредактировать <project>/platforms/android/build.gradle
и <project>/platforms/android/CordovaLib/build.gradle
и убедиться, что оба они указали на действительную версию плагина gradle.
dependencies {
classpath 'com.android.tools.build:gradle:2.2.0'
}
... и в <project>/platforms/android/CordovaLib/build.gradle
я добавил jcenter в репозитории (поскольку maven.org, похоже, не имел 2.2.0)
repositories {
mavenCentral();
jcenter()
}
Тогда я смог построить.
Переход на "Use default gradle wrapper" не работал для меня на моем ионном проекте 1, но работает
ionic platform remove android
ionic platform add android
Работал для меня
вы можете изменить значение в платформе /android/cordova/lib/builders/GradleBuilder.js
значение, которое вы изменили, оно будет заменено последним индексом градиента при переустановке платформы Android, поэтому вам не нужно беспокоиться об изменении
var distributionUrl = process.env['CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL'] || 'https\\://services.gradle.org/distributions/gradle-2.14.1-all.zip';
или как другие
export CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL="https\://services.gradle.org/distributions/gradle-2.14.1-all.zip"
Другой способ устранить проблему, которая также работает в Windows:
cordova build android --release --CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip
Я хочу продлить ответ @bungler.
Я запутался в версии gradle и совместимой версии плагина android для градиента. Следующая ссылка имеет список сопоставлений версий совместимости:
Gradle vs Android для градиента - Совместимый список версий
Для текущей версии gradle 3. 3+, совместимая версия плагина android 2.3.3
Таким образом, окончательные настройки будут выглядеть следующим образом:
Для Mac
ШАГ 1: добавить следующие переменные env:
option a) обновить переменную env:
export CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL="https\://services.gradle.org/distributions/gradle-3.3-all.zip"
или же
вариант b) вы можете загрузить файл градиента и поместить его в <project>/platforms/android/gradle/
и обновить переменную env:
export CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL="../gradle-3.3-all.zip"
ШАГ 2: обновить следующее в <project>/platforms/android/CordovaLib/build.gradle
buildscript {
...
dependencies {
classpath 'com.android.tools.build:gradle:2.3.3'
}
}
Это сработало для меня.
Для следующей ошибки:
Минимальная поддерживаемая версия Gradle - 4.1. Текущая версия - 3.3. Если вы используете обертку градиента, попробуйте отредактировать дистрибутив Url в E:\ionic\MyIonicProject\gr adle\wrapper\gradle-wrapper.properties до gradle-4.1-all.zip для градации 4.1
Эта команда работала для меня:
ionic cordova platform update android
В ответ на ответ Чака Холбрукса со следующим решением я получаю ошибку при попытке добавить платформу Android снова, говоря, что она уже добавлена.
ionic cordova platform remove android
ionic cordova platform add android
Мое рабочее решение:
ionic cordova platform remove android
ionic cordova platform check android
ionic cordova platform add android