Android Studio构建错误-“无法解决:监控”

时间:2018-10-25 04:17:12

标签: android android-studio gradle

我有一个以前运行的项目,该版本已升级到最新版本。现在由于下面的构建错误,我无法构建项目。

  

无法解决:监视
打开文件

“打开文件”链接指向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'
}

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存储库之前引用。检查一下,让我知道是否可行。