错误:在 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 && 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",
...
之后你必须:
删除文件夹 platforms 和 plugins 运行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.gradle
和app
模块build.gradle
中。
在这两种情况下都进入buildscripts.repositories
和allprojects.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 5 中找不到电容器社区/sqlite 的 GlobalSQLite 文件
ionic 3 - 错误在 Android Studio 中也找不到安装的 Gradle 版本
在 Angular 7 中找不到名称“require”(打字稿 3.1.3)
乘客错误在 Bluehost 共享主机上的任何源 (Bundler::GemNotFound) 中找不到 rake-11.3.0