运行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来自哪里?如何更改它以及我可以更改它?
如果我无法轻易解决这个问题,还有最后一步要做:删除并重新安装所有内容。
谢谢!
答案 0 :(得分:19)
快速临时修复是将google maven repo包含在您的顶级gradle文件中。
allprojects {
repositories {
mavenLocal()
maven { url 'https://maven.google.com' } // <-- add this!
jcenter()
答案 1 :(得分:13)
对我来说,AIT MANSOUR和Moritz的答案不起作用,因为我还有其他需要jcenter()
和jitpack
的依赖项,{{1}你需要react-native
。
所以,我对node_modules
的解决方案是
react-native
答案 2 :(得分:6)
我解决了这个问题(至少对我而言)。
似乎jcenter
在为项目提供库时存在一些问题(可能是暂时的)。正如人们在这里建议的那样,你可以通过从maven获取这些库来解决这个问题。
转到build.gradle文件(对于离子开发者,它位于/ platforms / android中)并在每行代码中添加jcenter()
这一行maven { url 'https://maven.google.com' }
。
对我来说,这是两个地方:buildscript
和allprojects
。最后,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