android - Ionic 3 中的错误 : Could not find org. jetbrains.kotlin :kotlin-stdlib-jdk8:1. 3.60-eap-25

标签 android cordova ionic-framework ionic3 build.gradle

我在为 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
}

还是同样的错误。

最佳答案

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

截至今天(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:+'

这是一种极其脆弱的指定依赖关系的方式。这里的“+”号意味着“获取存储库中可用的最新版本”。 如果在存储库中发布了较新的版本,并且它破坏了构建,那么使用此插件的每个人的项目都会被破坏。 这件事发生在今天。正在获取的损坏版本是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。 同时,只需使用此插件的固定分支即可。

关于android - Ionic 3 中的错误 : Could not find org. jetbrains.kotlin :kotlin-stdlib-jdk8:1. 3.60-eap-25,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58529904/

相关文章:

android - 在正在进行的通话中播放音频剪辑

Android:拍照,然后立即进行裁剪而无需从图库中选择

cordova - Sencha 上的 Youtube 视频在 ios 中将方向固定为纵向时显式更改了应用程序的布局

javascript - 引用错误 : cordova is not defined @ng-cordova. min.js:7

angular - 错误 RangeError : Maximum call stack size exceeded, core.js:15724

android - 在 Linux 中为 Android NDK 构建脚本

android - 我可以使用 .setVisibility(View.GONE) 还是应该只删除 View 本身?

android - 在没有 android studio 的情况下测试 ionic 2 应用程序

c# - Facebook (OAuthException - #100) 尝试访问节点类型 (AnonymousUser) 上不存在的字段 (first_name)

javascript - 在 ionic cordova 中使用 javascript 修改 PDF 以添加按钮