找不到runtime.jar(android.arch.lifecycle:runtime:1.0.0)

时间:2018-05-28 09:39:14

标签: android cordova ionic-framework gradle

运行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

这是对的。当我转到此网址https://jcenter.bintray.com/android/arch/lifecycle/runtime/1.0.0/runtime-1.0.0.jar时,我得到一个404 Not found error作为JSON。

我没有在该网址中看到任何特定于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

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

这里的问题是什么?该URL来自哪里?如何更改它以及我可以更改它?

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

谢谢!

9 个答案:

答案 0 :(得分:19)

快速临时修复是将google maven repo包含在您的顶级gradle文件中。

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

答案 1 :(得分:13)

对我来说,AIT MANSOURMoritz的答案不起作用,因为我还有其他需要jcenter()jitpack的依赖项,{{1}你需要react-native

所以,我对node_modules的解决方案是

react-native

答案 2 :(得分:6)

我解决了这个问题(至少对我而言)。

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

转到build.gradle文件(对于离子开发者,它位于/ 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文件中。

答案 3 :(得分:4)

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

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

找不到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():

<ion-content padding>

  <h1>Authentication Demo</h1>
  <hr align="left" width="30%">

  <form [formGroup]="authForm">
    <ion-item>
      <ion-label floating>Username</ion-label>
      <ion-input type="text" [(ngModel)] ="username" value="" [formControl]="authForm.controls['username']" [ngClass]="{'error-border':!authForm.controls['username'].valid}"></ion-input>
    </ion-item><br/>
    <div class="error-box" *ngIf="authForm.controls['username'].hasError('required') && authForm.controls['username'].touched">* Username is required!</div>
    <ion-item>
      <ion-label floating>Password</ion-label>
      <ion-input type="password" [(ngModel)] ="password" value="" [formControl]="authForm.controls['password']"></ion-input>
    </ion-item><br/>
    <div class="error-box" *ngIf="authForm.controls['password'].hasError('required') && authForm.controls['password'].touched">* Username is required!</div>
    <div class="error-box" *ngIf="authForm.controls['password'].hasError('minlength') && authForm.controls['password'].touched">* Minimum username length is 8!</div>
    <div class="error-box" *ngIf="authForm.controls['password'].hasError('checkFirstCharacterValidatorOutput') && authForm.controls['password'].touched">* Password cant't start with number!</div><br/>
    <ion-list>
      <ion-item>
        <ion-label>Gender</ion-label>
        <ion-select [formControl]="authForm.controls['gender']">
          <ion-option value="e">Other</ion-option>
          <ion-option value="f">Female</ion-option>
          <ion-option value="m">Mele</ion-option>
        </ion-select>
      </ion-item>
    </ion-list><br/>

    <button type="submit" ion-button full [disabled]="!authForm.valid" (click)="myFunc1()">Submit</button>
    <button type="submit" ion-button full [disabled]="!authForm.valid" (click)="myFunc2()">Reset</button>

  </form>

</ion-content>

现在项目正在建设中! 祝你好运!

答案 4 :(得分:4)

在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"
        }
    }
}

答案 5 :(得分:1)

问题似乎是pom列在jcenter上但是jar丢失了。

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

如果元数据存在于回购中但是工件缺失

,则Gradle将失败

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

@ Moritz的修复工作应该首先转到maven.google.com

答案 6 :(得分:1)

这对我来说只需遵循这两步

第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

答案 7 :(得分:1)

已解决此问题的cordova-android(7.1.1)的新版本。

因此删除当前的android平台

cordova platform rm android

并添加新平台

cordova platform add android@7.1.1

答案 8 :(得分:0)

我删除了android平台,然后又添加了它: 删除:

cordova platform rm android

添加:

cordova平台添加android

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

cordova平台添加android@6.1.0