Проблема заключается в cordova-support-google-services
плагин для Cordova.
Этот плагин build.gradle
похож на это с сегодняшнего дня (24-го октября 2019):
dependencies {
classpath 'com.android.tools.build:gradle:+'
classpath 'com.google.gms:google-services:4.2.0'
}
более точно проблема заключается в этой зависимости:
classpath 'com.android.tools.build:gradle:+'
, Который является чрезвычайно хрупким способом указать зависимости. '+' знак здесь означает, "выбирают новую версию, доступную в repo". Если более новая версия публикуется в repo, и это повреждает сборку, то всем с этим плагином повредили их проекты. Сегодня это произошло. Поврежденная версия, которая выбирается, com.android.tools.build:gradle:4.0.0
. Требуется некоторый материал Kotlin.
Именно поэтому необходимо ВСЕГДА замораживать зависимости для надежного разрабатывания проекта. Никогда не доверяйте более новому материалу. Эти компиляции зависимости, прекрасные, как это вчера сделало:
classpath 'com.android.tools.build:gradle:3.5.1'
Для тех, которые используют Cordova или ионический диалект, можно сделать быстрое исправление, чтобы смочь разработать проект путем замораживания зависимости в файле:
<projectroot>/platforms/android/cordova-support-google-services/<project>-build.gradle
Это не категорическое решение все же. При переустановке платформы андроида через Cordova, ошибка обнаружится снова. Специалист по обслуживанию проекта должен или заморозить зависимость или зафиксировать ее для поддержки gradle 4.0.0. Тем временем просто используйте фиксированное ветвление этого плагина.
Вот решение.
проблемой был точно репозиторий знатока ( здесь ), но проблема была с build.gradle от плагин cordova-support-google-services, таким образом, я добавил необходимую строку, и все в порядке теперь, я уже создал запрос получения по запросу к исходному repo ( здесь ). Но тем временем можно сделать то, что я сделал, просто замените в package.json текущий versiГіn с моим repo:
Прежде:
...
"cordova-support-google-services": "^1.3.1",
...
После:
...
"cordova-support-google-services": "https://github.com/LuisEGR/cordova-support-google-services.git",
...
после этого Вы будете иметь к:
npm install
, Это - временное решение, в то время как запрос получения по запросу к основному repo принят, и npm пакет обновил
и вот именно, теперь можно разработать проект снова.
<час> я использую ионические 4, и некоторые плагины требуют cordova-support-google-services
, в случае, если у Вас нет его в Вашем package.json, ошибка могла быть с другим плагином, раз так добавьте package.json, таким образом, мы можем узнать, какой является проблемой.
ОБНОВЛЕНИЕ 24/ОКТЯБРЬ:
я изменил решение в своем repo как многие из Вас предложенный, теперь решение consinst только в фиксации зависимости: от: com.android.tools.build:gradle: + к пути к классу com.android.tools.build:gradle:3. + , это уже находится в моем repo, если Вы хотите видеть , что изменилось
cordova-support-google-services был обновлен сегодня к версии 1.3.2, которая изменяет путь к классу от classpath 'com.android.tools.build:gradle:+'
к
classpath 'com.android.tools.build:gradle:3.+'
, который, кажется, фиксирует kotlin ошибку
, я заставил мой создавать успешно путем выполнения следующего:
я отредактировал платформы-> андроид-> cordova-support-google-services-> myAppName-build.gradle
и изменился
maventCentral()
к [1 116]
maven { url "https://maven.google.com" }
maven { url 'https://dl.bintray.com/kotlin/kotlin-eap' }
, Который решил kotlin ошибку затем, я получал другую ошибку, которую я разрешил путем изменения
classpath 'com.google.gms:google-services:4.2.0'
к [1 118]
classpath 'com.google.gms:google-services:4.1.0'
, Это затем создало успешно.
Как дальнейшее временное приспособление к продолжению на предложение от @MisterSmith, используйте рычаг, чтобы повторно применить блокировку:
<hook src="scripts/fix_android_dep.sh" type="after_platform_add"/>
с этим чрезмерно многословным кодом удара:
#!/usr/bin/env bash
## temporary fix for android studio EAP issue
## SOURCE: https://stackoverflow.com/a/58536638/56545
if [ -d "platforms/android/cordova-support-google-services" ]; then
file="platforms/android/cordova-support-google-services/app-build.gradle"
from="classpath 'com.android.tools.build:gradle:+'"
to="classpath 'com.android.tools.build:gradle:3.5.1'"
change=`sed "s/$from/$to/" < "$file"`
echo "$change" > "$file"
fi
в моем проекте я фиксирую как это. (мой проект в kotlin)
buildscript{
repositories {
google()
jcenter()
......
maven { url 'https://dl.bintray.com/kotlin/kotlin-eap' }
}
}
allprojects {
repositories {
google()
jcenter()
......
maven { url 'https://dl.bintray.com/kotlin/kotlin-eap' }
}
}
Решение для ионного v3 и решение cordova
@Mister Smith решили мою проблему
, необходимо перейти к файлу
platforms/android/cordova-support-google-services
затем
Замена
classpath 'com.android.tools.build:gradle:+'
[1 110]
classpath 'com.android.tools.build:gradle:3.5.1'
@Alternative решение, которое я нашел, к [1 111]
setup kotlin in your system :)