Error: Could not find org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.60-eap-25 in Ionic 3

Error: Could not find org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.60-eap-25 in Ionic 3

我在为 Android 构建 Ionic 3 应用程序时突然收到以下错误。

Could not find org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.60-eap-25

我们有一个来自 Android Studio here 的解决方案,但在我使用以下代码更改 build.gradle 后,我仍然收到错误。

buildscript {
    repositories {
        ...
        maven { url 'https://dl.bintray.com/kotlin/kotlin-eap' }
    }
}

allprojects {
    repositories {
        ...
        maven { url 'https://dl.bintray.com/kotlin/kotlin-eap' }
    }
}

更新 Cordova 并添加上述解决方案后,我的 build.gradle 文件如下所示。

buildscript {
    repositories {
        google()
        jcenter()
        maven { url 'https://dl.bintray.com/kotlin/kotlin-eap' }
    }

    dependencies {
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files

        classpath 'com.android.tools.build:gradle:3.3.0'
    }
}

allprojects {
    repositories {
        google()
        jcenter()
        maven { url 'https://dl.bintray.com/kotlin/kotlin-eap' }
    }

    //This replaces project.properties w.r.t. build settings
    project.ext {
      defaultBuildToolsVersion="28.0.3" //String
      defaultMinSdkVersion=19 //Integer - Minimum requirement is Android 4.4
      defaultTargetSdkVersion=28 //Integer - We ALWAYS target the latest by default
      defaultCompileSdkVersion=28 //Integer - We ALWAYS compile with the latest by default
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

还是一样的错误。

这是解决方案。

问题正是 maven 存储库 (here), but the issue was with the build.gradle from the cordova-support-google-services plugin, so I added the required line and everything is ok now, I've already created a pull request to the original repo (here)。但与此同时你可以做我做的,只需将 package.json 中的当前版本替换为我的 repo:

之前:

...
"cordova-support-google-services": "^1.3.1",
...

之后:

...
"cordova-support-google-services": "https://github.com/LuisEGR/cordova-support-google-services.git",
...

之后您将必须:

  • 删除文件夹 platformsplugins
  • 运行 npm install

This is a temporal solution while the pull request to the main repo gets accepted and the npm package updated

就是这样,现在您可以再次构建您的项目了。


我正在使用 Ionic 4,一些插件需要 cordova-support-google-services,如果您的 package.json 中没有它,则错误可能与其他插件有关,如果是这样,请添加package.json 这样我们就可以找出问题所在。


10 月 24 日更新:

我已经按照你们中的许多人的建议更改了我的 repo 中的解决方案,现在解决方案只是修复依赖关系:来自:com.android.tools.build:gradle:+ 到类路径 com.android.tools.build:gradle:3.+,如果你想看 what's changed[,这已经在我的仓库中了=17=]

编辑 2019 年 10 月 28 日:

cordova-support-google-services 今天更新到版本 1.3.2,它改变了类路径 classpath 'com.android.tools.build:gradle:+'

classpath 'com.android.tools.build:gradle:3.+'

似乎修复了 kotlin 错误

原答案

我通过执行以下操作成功构建:

我编辑了 平台->android->cordova-support-google-services->myAppName-build.gradle

并更改了

maventCentral()

    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'

classpath 'com.google.gms:google-services:4.1.0'

然后构建成功。

在我的项目中,我是这样修复的。(我在 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' }
   }
}

问题出在 Cordova 的 cordova-support-google-services 插件上。

截至今天(2019 年 10 月 24 日),此插件的 build.gradle 看起来像这样:

dependencies {
    classpath 'com.android.tools.build:gradle:+'
    classpath 'com.google.gms:google-services:4.2.0'
}

更确切地说,问题在于这种依赖性:

classpath 'com.android.tools.build:gradle:+'

这是一种极其脆弱的指定依赖关系的方式。这里的“+”号表示"fetch the most recent version available in the repo"。 如果在 repo 中发布了更新的版本,并且它破坏了构建,那么使用这个插件的每个人的项目都会被破坏。 这发生在今天。正在获取的损坏版本是 com.android.tools.build:gradle:4.0.0。它需要一些 Kotlin 的东西。

这就是为什么您需要始终冻结依赖项以可靠地构建您的项目。永远不要相信更新的东西。这个依赖编译得很好,就像昨天一样:

classpath 'com.android.tools.build:gradle:3.5.1'

对于使用 Cordova 或 Ionic 的用户,您可以通过冻结文件中的依赖项来快速修复以构建项目:

<projectroot>/platforms/android/cordova-support-google-services/<project>-build.gradle

但这不是最终的解决方案。如果您通过 Cordova 重新安装 android 平台,错误将再次出现。项目维护者应该冻结依赖项或修复它以支持 gradle 4.0.0。 同时,只需使用此插件的固定分支。

作为对来自@MisterSmith 的 的进一步临时修复,使用钩子重新应用锁:

<hook src="scripts/fix_android_dep.sh" type="after_platform_add"/>

使用这个过于冗长的 bash 代码:

#!/usr/bin/env bash

## temporary fix for android studio EAP issue
## SOURCE: 
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

ionic v3 和 cordova 的解决方案

@Mister Smith 解决了我的问题

您必须转到文件

platforms/android/cordova-support-google-services

然后

替换

classpath 'com.android.tools.build:gradle:+'

来自

classpath 'com.android.tools.build:gradle:3.5.1'

@我找到的另一种解决方案是

setup kotlin in your system :)
以上的

None 对我有用。我最终删除了 google-services 插件并添加了它。

cordova plugin rm cordova-support-google-services cordova plugin add cordova-support-google-services

我不得不将 maven { url 'https://dl.bintray.com/kotlin/kotlin-eap' } 添加到顶层 build.gradleapp 模块 build.gradle 中。 在这两种情况下都进入 buildscripts.repositoriesallprojects.repositories

在我的例子中,我首先遇到了同样的错误,然后是一大堆其他包(org.ow2.asm:asm-analysis:4.0@jar, etc...)也无法解决.

问题是我将 Gradle 升级到 v5(以便能够支持新版本的 Crashlytic)。这样做,我将存储库升级到 Google(),并删除了旧的 Maven { url ... } 条目。

但是我也删除了jcenter(),很多节点仍然需要它。

现在我的存储库部分如下所示:

buildscript {
    repositories {
        maven { url "$rootDir/../node_modules/react-native/android" }
        google() // Google Maven repository
        jcenter()
    }
    //...

因此,如果其他人正在阅读本文但对当前接受的降级解决方案不满意 Gradle,请检查您是否有 jcenter()。

Ps.: 我意识到这是一个老问题,但我最近在 google.

上搜索时发现了它