60
задан 25 October 2019 в 00:45

6 ответов

Проблема заключается в 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. Тем временем просто используйте фиксированное ветвление этого плагина.

58
ответ дан 1 November 2019 в 10:22

Вот решение.

проблемой был точно репозиторий знатока ( здесь ), но проблема была с 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",
...

после этого Вы будете иметь к:

  • папки Remove платформы и плагины
  • работают 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, если Вы хотите видеть , что изменилось

26
ответ дан 1 November 2019 в 10:22

РЕДАКТИРОВАНИЕ 28.10.19:

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'

, Это затем создало успешно.

14
ответ дан 1 November 2019 в 10:22

Как дальнейшее временное приспособление к продолжению на предложение от @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
5
ответ дан 1 November 2019 в 10:22

в моем проекте я фиксирую как это. (мой проект в 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' }
   }
}
4
ответ дан 1 November 2019 в 10:22

Решение для ионного 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 :)
4
ответ дан 1 November 2019 в 10:22

Другие вопросы по тегам:

Похожие вопросы: