无法解析org.webkit:android-jsc:+

问题描述 投票:0回答:3

每次尝试为我的 React Native 项目运行“react-native run-android”或“./gradlew bundleRelease”时,我都会收到错误。

FAILURE: Build failed with an exception.

* What went wrong:
Could not determine the dependencies of task ':app:collectReleaseDependencies'.
> Could not resolve all task dependencies for configuration ':app:releaseRuntimeClasspath'.
   > Could not resolve org.webkit:android-jsc:+.
     Required by:
         project :app
      > Failed to list versions for org.webkit:android-jsc.
         > Unable to load Maven meta-data from https://jcenter.bintray.com/org/webkit/android-jsc/maven-metadata.xml.
            > Could not HEAD 'https://jcenter.bintray.com/org/webkit/android-jsc/maven-metadata.xml'.
               > Read timed out

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0.
Use '--warning-mode all' to show the individual deprecation warnings.
See https://docs.gradle.org/6.7/userguide/command_line_interface.html#sec:command_line_warnings

BUILD FAILED in 2m 37s

这是我的 build.gradle 文件:

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    ext {
        buildToolsVersion = "29.0.3"
        minSdkVersion = 24
        compileSdkVersion = 30
        targetSdkVersion = 30
        supportLibVersion = "28.0.0"
        googlePlayServicesAuthVersion = "16.0.1"
    }
        repositories {
        google()
        mavenCentral()
        mavenCentral()
    }
    dependencies {
        classpath 'com.facebook.react:react-native:0.12.+'

        classpath 'com.android.tools.build:gradle:4.0.0'
        classpath 'com.google.gms:google-services:4.2.0'

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

allprojects {
    repositories {
        mavenCentral()
        mavenLocal()
        maven {
            // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
            url("$rootDir/../node_modules/react-native/android")
        }
        maven {
            // Android JSC is installed from npm
            url("$rootDir/../node_modules/jsc-android/dist")
        }
        maven {
            // expo-camera bundles a custom com.google.android:cameraview
            url "$rootDir/../node_modules/expo-camera/android/maven"
        }
        maven { url 'https://maven.google.com' }
        maven { url 'https://www.jitpack.io' }

        google()
        jcenter()
    }
}

除了添加“www”之外,我找不到任何有关为什么会发生这种情况的信息。到“https://www.jitpack.io”,但它已经有了。

“react-native run-android”昨天可以工作,从那时起我改变了模拟器,也改变了java版本。

有谁知道为什么会这样?

android react-native
3个回答
8
投票

JCenter 将关闭,现在为只读。而且它离线通常会导致构建和管道出现问题。

总结一下

您需要更新您的

android/build.gradle
文件才能使用
mavenCentral()
而不是
Jcenter()

根据 Gradle 文档,JCenter 是 Maven Central 的镜像,因此所有依赖项都应该在那里。

JCenter 是一个中央工件存储库,就像 Maven Central 一样。软件 项目使用 JCenter 将其软件分发给其他人。 JCenter 还充当 Maven Central 的镜像,因此任何依赖项 在 Maven Central 上可用 在 JCenter 上也可用(但不是副 反之亦然)。

需要考虑的一些事项:

  • 如果它是一个(例如node_modules/react-native-appsflyer),指向Jcenter,那就会给你一个错误......我建议你检查给你一个错误的库是否已更新一个新的有修复的版本。如果是这样,请更新到新的 版本以获取更改。

  • 如果库没有包含修复程序的版本,如果您使用 npm 包在 React-native 中构建,则可以利用

    patch-package
    library。因为图书馆可能尚未发布从
    build.gradle
    中删除 JCenter 的更新。

应用补丁

您可以使用补丁包库自行应用更改。最后添加了文档供参考。

  1. 前往
    node_modules/library-with-error/android/build.gradle
  2. jcenter()
    更改为
    mavenCentral()
  3. 运行:
    npx patch-package library-with-error
  4. Git 添加、提交和推送

个人笔记:

  • 我确实建议完全删除
    JCenter
    ,而不是将 MavenCentral() 添加到顶部,因为 shutdown 并且 JCenter 经常离线并给出超时错误。

根据当前时间线,使用 JCenter 的构建将能够 在2022 年 2 月 1 日之前解决依赖关系,无需进行任何更改。后 在那一天,无法保证您能够建造 如果您继续使用 JCenter,请保留您的软件。”

    此外,Gradle 不鼓励使用 JCenter。
“为了阻止新项目使用 JCenter,我们将删除 来自我们的示例和初始化模板的 JCenter。新的默认值将是 马文中央。 Gradle 本身与 JCenter 或 Maven 没有内在联系 Central,因此您可以随时切换您选择的任何其他存储库。 此更改将在下一个 Gradle 版本中生效 – Gradle 7.0。”

有用的链接

  • --use-yarn
     添加到 
    patch-package
     命令,以防您的项目使用 
    Yarn
  • 使用
  • 补丁包的文档。

0
投票
我们也刚刚遇到了这个问题。我相信 JCenter 现在已经关闭了。

https://status.bintray.com/


0
投票
只需

npm install [email protected]

 并修补 
android/build.gradle

- maven { - // Android JSC is installed from npm - url("$rootDir/../node_modules/jsc-android/dist") + exclusiveContent { + filter { + includeGroup "org.webkit" + } + forRepository { + maven { + url("$rootDir/../node_modules/jsc-android/dist") + } + }
    
© www.soinside.com 2019 - 2024. All rights reserved.