错误:在 Ionic 3 中找不到 org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.60-eap-25

Posted

技术标签:

【中文标题】错误:在 Ionic 3 中找不到 org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.60-eap-25【英文标题】:Error: Could not find org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.60-eap-25 in Ionic 3 【发布时间】:2020-02-20 02:48:38 【问题描述】:

我在构建适用于 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 网址。 那么,如果您的 build.gradle 文件不是您发布的文件,它实际上是什么样子的?因为您的错误消息是说您删除了gradle:3.0.1 所在的存储库。 请查看描述。我已经添加了我的 build.gradle 代码。我只是替换了网址。 您应该只添加新行,而不是替换任何现有行。你换了什么线? 【参考方案1】:

问题在于 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:+'

这是一种非常脆弱的指定依赖关系的方法。此处的“+”符号表示“获取 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。 同时,只需使用该插件的固定分支。

【讨论】:

当我们谈论临时解决方案时,这对我来说是最快和解释性的解决方案。谢谢 我有一个问题。如果我的应用程序已经构建并安装在手机中,是否可以在依赖项中使用“+”中断应用程序的影响?一个应用有很多依赖,很难维护所有的版本。 我使用 Phonegap Build 编译我的应用程序;我得到了同样的错误,虽然我没有包含插件'cordova-support-google-services'。有什么建议?特别是,如何在我的 config.xml 文件中解决这个问题? @peterk 这里修复了 phonegap build community.adobe.com/t5/PhoneGap/… 插件 cordova-support-google-services 已经发布了一个新版本 ^1.3.2,他在其中冻结了解决问题的依赖项。答案应该更新以反映这一点。【参考方案2】:

编辑 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'

然后构建成功。

【讨论】:

必须在platforms/android/app/build.gradle中将***.com/a/55793096/2393822 @JimBergman 我从Android Studio官方网站得到了kotlin URL:参考androidstudio.googleblog.com/2019/10/… 向下滚动到“缺少 Kotlin Maven 存储库的已知问题”部分 @DanielRead 谢谢我现在明白了。仍然不要认为在 bintray.com 中引用文件是解决问题的方法。上面史密斯先生的解决方案要好得多。 要更新插件,运行:cordova plugin rm cordova-support-google-services --force &amp;&amp; cordova plugin add cordova-support-google-services【参考方案3】:

这是解决方案。

问题正是 maven 存储库 (here),但问题出在 cordova-support-google-services 插件中的 build.gradle,所以我添加了所需的行,现在一切正常,我已经创建了一个对原始仓库的拉取请求(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

这是一个临时解决方案,同时对主仓库的拉取请求被接受并更新 npm 包

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


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


10 月 24 日更新:

我已经按照你们中的许多人的建议更改了我的 repo 中的解决方案,现在的解决方案只是修复依赖关系:从:com.android.tools.build:gradle:+ 到 classpath com.android.tools.build:gradle:3.+,如果你想看what's changed

,这已经在我的仓库中了

【讨论】:

某人通常需要多长时间才能批准该 repo 上的某些内容?【参考方案4】:

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

【讨论】:

【参考方案5】:

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'

我找到的@Alternative 解决方案是

setup kotlin in your system :)

【讨论】:

它有效。谢谢你。我认为我们可以将版本设置为与 build.gradle 文件中的版本相同 @NguyenTran 我认为如果你想使用最新的 Gradle,在你的系统中使用 android studio 设置 Kotlin 是最先进和最好的解决方案,否则,坚持你的项目支持的旧版本 gradle .或寻找对 ionic v3 的最佳 gradle 支持。【参考方案6】:

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

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

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

#!/usr/bin/env bash

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

【讨论】:

在将app-build.gradle 更改为%MY_APP_NAME%-build.gradle 后为我工作。谢谢!【参考方案7】:

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

【讨论】:

【参考方案8】:

以上都不适合我。我最终删除了 google-services 插件并添加了它。

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

【讨论】:

这是真正解决问题的唯一答案。删除和添加插件会更正 build.gradle 文件中应更正的所有内容。【参考方案9】:

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

问题是我将 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 上搜索时发现了它。

【讨论】:

以上是关于错误:在 Ionic 3 中找不到 org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.60-eap-25的主要内容,如果未能解决你的问题,请参考以下文章

打字稿错误使用googlemaps javascript API时在ionic2中找不到名称'google'

在 ionic Cordova 中找不到相机

在 Ionic 5 中找不到电容器社区/sqlite 的 GlobalSQLite 文件

ionic 3 - 错误在 Android Studio 中也找不到安装的 Gradle 版本

在 Angular 7 中找不到名称“require”(打字稿 3.1.3)

乘客错误在 Bluehost 共享主机上的任何源 (Bundler::GemNotFound) 中找不到 rake-11.3.0