我有一个以前运行的项目,该版本已升级到最新版本。现在由于下面的构建错误,我无法构建项目。
无法解决:监视
打开文件
“打开文件”链接指向build.gradle(模块)文件。我尝试了“无效并重新启动”,但没有帮助。
在“无法解决:监视器”或“无法解决:”下进行搜索没有任何解决办法。
在这一点上,我完全陷入了困境。
模块:build.gradle
apply plugin: 'com.android.application'
android {
compileSdkVersion 28
buildToolsVersion '28.0.3'
defaultConfig {
applicationId "com.example.android.sunshine"
minSdkVersion 14
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
}
}
productFlavors {
}
}
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support:recyclerview-v7:28.0.0'
implementation 'com.android.support:preference-v7:28.0.0'
androidTestImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support:support-annotations:28.0.0'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test:rules:1.0.2'
}
答案 0 :(得分:5)
昨天,每当我从Git存储库中结帐新分支或在Android Studio中创建新项目时,我都遇到了这个问题。
根本原因::当我尝试构建应用程序时,Android Studio显示此错误
Could not find monitor.jar (com.android.support.test:monitor:1.0.2).
Searched in the following locations:
https://jcenter.bintray.com/com/android/support/test/monitor/1.0.2/monitor-1.0.2.jar
在浏览器中打开https://jcenter.bintray.com/com/android/support/test/monitor/1.0.2/monitor-1.0.2.jar时出现此错误。
{
"errors" : [ {
"status" : 404,
"message" : "Could not find resource"
} ]
}
我的假设是monitor
仓库中的jcenter
依赖项已被删除(可能是暂时的)。结果,构建过程失败。所以我想出了两种解决方案:
解决方案1 :转到build.gradle (Project)
更改存储库的顺序,因此gradle构建系统将首先在monitor
存储库中找到google
依赖项。幸运的是,这种依赖关系在存储库中可用(至少到目前为止)。
allprojects {
repositories {
jcenter()
google()
}
}
到
allprojects {
repositories {
google()
jcenter()
}
}
解决方案2 :转到build.gradle (Module:App)
注释掉或删除这些行。这意味着我们的应用程序不需要Android测试支持库,该库提供了用于测试Android应用程序的广泛框架。
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support:recyclerview-v7:28.0.0'
implementation 'com.android.support:preference-v7:28.0.0'
androidTestImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support:support-annotations:28.0.0'
// Comment-out or delete these lines
// androidTestImplementation 'com.android.support.test:runner:1.0.2'
// androidTestImplementation 'com.android.support.test:rules:1.0.2'
}
然后点击立即同步。
答案 1 :(得分:2)
问题似乎出在jcenter上。我已经花了几个小时来解决这个问题,您的问题似乎与我的类似,我认为以下解决方案应该可以解决。
由于某些原因以及jcenter中的许多库,许多库的pom文件都保留在原位,但是相应的aar文件已被删除。 play-services-basement 库也是如此。在此处检查以下内容以作为参考( play-services-basement 的pom文件在jcentre here处可用,而aar文件在jcentre here处不可用):
解决方案: 在您的项目级别gradle文件中,更改以下代码块
allprojects {
repositories {
jcenter()
google()
}
}
到
allprojects {
repositories {
google()
jcenter()
}
}
这为什么起作用?
在我们的第一个代码块中,当gradle尝试解决存储库中的依赖项(在我的情况下,它是jcentre存储库中的google-services-basement),由于相应的aar文件已被删除,因此ddi无法解析。结果,构建失败并显示如下内容:
Could not find play-services-basement.aar (com.google.android.gms:play-services-basement:15.0.1).
在我们的第二个代码块中,已在jcenter存储库之前引用了Google存储库。当gradle构建开始时,它将首先在资源库{...中列出的库中首先查找,用于解析项目中使用的任何库。现在,当gradle尝试解决jcenter中的play-services-basement时,它成功解决了依赖性,因为Google存储库已提供了相应的aar文件(jcenter存储库中未提供最新版本的相同aar文件)在评估jcenter存储库之前引用。检查一下,让我知道是否可行。