【问题标题】:Could not find runtime.jar (android.arch.lifecycle:runtime:1.0.0)找不到 runtime.jar (android.arch.lifecycle:runtime:1.0.0)
【发布时间】:2018-11-06 20:50:32
【问题描述】:

在我运行 ionic cordova build android 后,我收到此错误:

FAILURE: Build failed with an exception.

* What went wrong:
Could not resolve all files for configuration ':debugCompileClasspath'.
> Could not find runtime.jar (android.arch.lifecycle:runtime:1.0.0).
  Searched in the following locations:
  https://jcenter.bintray.com/android/arch/lifecycle/runtime/1.0.0/runtime-1.0.0.jar

这是正确的。当我访问这个 URL https://jcenter.bintray.com/android/arch/lifecycle/runtime/1.0.0/runtime-1.0.0.jar 时,我得到一个 404 Not found error 作为 JSON。

我在该 URL 中没有看到任何 android/cordova 特定版本,因此我无法从我的 cordova 安装中说出它。

Cordova 版本:7.1.0

离子信息:

cli packages: (C:\Users\%User%\AppData\Roaming\npm\node_modules)

    @ionic/cli-utils  : 1.19.2
    ionic (Ionic CLI) : 3.20.0

global packages:

    cordova (Cordova CLI) : not installed // this is strange. I can run cordova in my terminal tho

local packages:

    @ionic/app-scripts : 3.1.8
    Cordova Platforms  : android 6.4.0
    Ionic Framework    : ionic-angular 3.9.2

System:

    Android SDK Tools : 26.1.1
    Node              : v8.4.0
    npm               : 5.3.0
    OS                : Windows 10

Environment Variables:

    ANDROID_HOME : C:\Users\%User%\AppData\Local\Android\Sdk

Misc:

    backend : pro

另外,我在C:\Users\%USER%\.cordova\lib\npm_cache 中没有任何cordova-android 文件夹(我不知道这是否有帮助。我看到人们在谈论这个文件夹)

这里有什么问题?该网址来自哪里?我怎样才能改变它,我能用什么改变它?

如果我不能轻易解决这个问题,还有最后一步:删除并重新安装所有内容。

谢谢!

【问题讨论】:

  • 运行 react-native run-android 命令后,我在 React Native 上遇到了这个问题。
  • 我可以看到很多人在同一天遇到完全相同的问题。可能是 CDN 服务器的临时问题?
  • @boyd 是的,看起来有人决定破坏每个人的构建
  • 你可以试试compileSdkVersion升级。
  • 我给jcenter 的人发了消息。他们说那里没有.jar 文件。这只是一个.aar 文件。

标签: android cordova ionic-framework gradle


【解决方案1】:

已经发布了一个新版本的cordova-android (7.1.1) 来解决这个问题。

所以删除当前的android平台

cordova platform rm android

并添加新平台

cordova platform add android@7.1.1

【讨论】:

    【解决方案2】:

    对我来说,AIT MANSOURMoritz 的答案不起作用,因为我还有其他需要 jcenter()jitpack 的依赖项,此外,对于 react-native,您需要 node_modules

    所以,我对react-native 的解决方案是

    allprojects {
        repositories {
            // this is for native modules I'm developing
            mavenLocal()
            // for modules depending on jitpack.io
            maven { url "https://jitpack.io" }
            // add this one
            maven {
                url "https://maven.google.com"
            }
            maven {
                url "$rootDir/../node_modules/react-native/android"
            }
            // keep this at the end
            jcenter()
        }
    }
    

    【讨论】:

    • 这是唯一适用于我的 react-native 解决方案。使用他们说的 npm 包,他们说的很容易。浪费了几个小时!谢谢八面体!
    • 工作就像一种享受。通过像这样订购您的存储库,您实际上是首先从 Maven 中提取库,然后是您的本地 node_modules 目录,然后从 jcenter 中提取不在这两个目录中的任何内容。谢谢!
    • 顺便说一句,这里是一个关于相同错误的热门 Github 问题的链接:github.com/zo0r/react-native-push-notification/issues/748
    【解决方案3】:

    我删除了android平台,然后再次添加: 删除:

    cordova 平台 rm android

    添加:

    cordova平台添加android

    现在一切正常 注意:这个版本的android这次没有正确安装(今天之前安装过!)

    cordova平台添加android@6.1.0

    【讨论】:

      【解决方案4】:

      我解决了这个问题(至少对我来说)。

      jcenter 似乎在为项目提供库时存在一些问题(可能是临时的)。正如人们在这里建议的那样,您可以通过从 maven 获取这些库来解决这个问题。

      转到您的 build.gradle 文件(对于 ionic devs,它位于 /platforms/android)并在每行代码上方添加 jcenter() 这一行 maven { url 'https://maven.google.com' }

      对我来说是两个地方:buildscriptallprojects。最后,您的 build.gradle 文件的顶部应如下所示:

      apply plugin: 'com.android.application'
      
      buildscript {
          repositories {
              maven { url "https://maven.google.com" }
              jcenter()
          }
      
          dependencies {
              classpath 'com.android.tools.build:gradle:3.0.0'
          }
      }
      
      allprojects {
          repositories {
              mavenLocal()
              maven { url 'https://maven.google.com' }
              jcenter()
          }
      }
      

      它有什么作用?它只是将库提供程序(在本例中为 jcenter)更改为另一个,以便您的应用程序可以成功下载它们。那里的每一行都有一个带有后备功能的库提供程序。

      我不知道为什么它一开始没有回退到 maven,因为回退提供程序在我的 build.gradle 文件中。

      【讨论】:

      • 这是一个临时修复,所以我们可以工作。也许明天jcenter 将可用。
      • 我认为它没有“回退到 maven”的原因是它在 jcenter 中找到了一个列表,但没有找到所需的 .jar 文件。所以它在“那里”,但它需要的特定 .jar 文件不是,这与 jcenter 没有它的列表不同。根据 jcenter,他们只有这个库的 .aar 文件,而不是 .jar
      • 在我的例子中, jcenter () 语句在 maven 之上,所以我的应用程序崩溃了。这个技巧解决了这个问题!
      【解决方案5】:

      这对我来说很有效,只需遵循这两步

      第 1 步: 在项目 build.gradle 文件中只需替换以下代码

       allprojects {
            repositories {
                mavenLocal()
                maven { url 'https://maven.google.com' }
                jcenter()
      //        google()
          }
      }
      

      如果您的项目 gradle 文件中存在 google(),只需注释掉即可。

      步骤 2: 在文件 gradle-wrapper.properties 降级 distributionUrl 我刚刚降级下面。

       distributionUrl=https\://services.gradle.org/distributions/gradle-4.0-all.zip
      

      【讨论】:

      • 我认为gradle-wrapper.properties 与此无关。
      【解决方案6】:

      在android/build.gradle中,将代码改为-

         allprojects {
          repositories {
              mavenLocal()
              maven { url 'https://maven.google.com' }
              jcenter()
              maven {
                  // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
                  url "$rootDir/../node_modules/react-native/android"
              }
          }
      }
      

      【讨论】:

      • 在我的 React-Native 项目中试过这个。不工作。
      • 可以分享你的项目吗?
      • @JItendraRana 尝试在“node_modules”maven 列表之后将jcenter() 移动到列表底部。
      【解决方案7】:

      问题似乎是在 jcenter 上列出了 pom,但缺少 jar。

      https://jcenter.bintray.com/android/arch/lifecycle/runtime/1.0.0/

      如果元数据存在于仓库中但工件丢失,则 Gradle 将失败

      https://github.com/gradle/gradle/issues/1120

      @Moritz 的修复应该通过首先访问 maven.google.com 来工作

      【讨论】:

        【解决方案8】:

        今天早上我遇到了同样的问题:

            Error:Could not resolve all files for configuration ':app:debugAndroidTestRuntimeClasspath'.
        

        找不到 runtime.jar (android.arch.lifecycle:runtime:1.0.0)。 在以下位置搜索: https://jcenter.bintray.com/android/arch/lifecycle/runtime/1.0.0/runtime-1.0.0.j

        我是这样解决的: 在项目存储库上,我编辑 build.gradle,我评论了 jcenter() :

        repositories {
           // jcenter()
            maven {
                url "https://maven.google.com"
            }
        }
        

        现在项目正在成功构建! 祝你好运!

        【讨论】:

        • 在哪个gradle app/build.gradle还是build.gradle??
        • 无需注释掉,因为您可能需要仅在 jcenter() 上可用的库。你可以把它移到maven下面。但是,如果您将其注释掉并且它有效,这可能意味着您可以完全删除 jcenter(),因为您可能不依赖该存储库中的任何库。
        【解决方案9】:

        一个快速的临时解决方法是将 google maven repo 包含在您的顶级 gradle 文件中。

        allprojects {
          repositories {
              mavenLocal()
              maven { url 'https://maven.google.com' } // <-- add this!
              jcenter()
        

        【讨论】:

        • 是的,这是一个很好的解决方案,而且它的逻辑。 Bintray的lib有问题,所以从另一台主机下载。谢谢
        • jcenter.bintray.com/android/arch/lifecycle/runtime/1.0.0/… 这是它正在寻找的存储库。任何替代解决方案。?
        • @JItendraRana:确保编辑 your-react-native-project/android/build.gradle 并在 jcenter 之前和 allprojects 组中添加新行。
        • 尝试此操作后,gradle 无法找到以下文件 https://jcenter.bintray.com/com/android/tools/build/aapt2-proto/0.1.0/aapt2-proto-0.1.0.jar - react-native-firebase 的某些依赖项
        • 我正在做一个 react-native 项目,现在我可以构建项目但无法启动应用程序,它提示“不幸的是,应用程序已停止”
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-11-09
        • 2020-02-18
        • 2018-01-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多