更新至Android Studio 3.2.1后无法解析模块依赖性

时间:2018-11-08 13:08:32

标签: java api android-studio gradle intellij-idea

升级到AS 3.2.1后,出现此gradle同步错误:

Unable to resolve dependency for ':app@debug/compileClasspath': Could not resolve project :androidlib_abc.

我的应用gradle.build:

apply plugin: 'com.android.application'


allprojects {
    repositories {
        // The order in which you list these repositories matter.
        google()
        jcenter()
        maven {
            url "https://maven.google.com"
        }
    }
}

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "de.gpx.android.rtk"
        minSdkVersion 24
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        externalNativeBuild {
            cmake {
                cppFlags ""
            }
        }
    }
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    externalNativeBuild {
        cmake {
            path "CMakeLists.txt"
        }
    }
    buildToolsVersion '28.0.3'
}

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
    compile project(path: ':androidlib_abc')
}

我的androidlib_abc gradle.build文件:

apply plugin: 'com.android.library'


android {
    compileSdkVersion 28
    buildToolsVersion '28.0.3'

    defaultConfig {
        minSdkVersion 24
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

    }
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:25.3.1'
    testCompile 'junit:junit:4.12'
}

错误消息中的“打开文件”链接指向应用gradle.build文件。当我删除行

compile project(path: ':androidlib_abc')

然后我可以同步成绩项目,但是我不能编译和使用该库中的任何程序包(无法解析类等)

我希望我不做更新...(“永远不要更改正在运行的系统” -_-)

有什么办法解决吗?

更新:

我从项目中删除了模块,然后重新导入了它。然后一切正常!但是:模块目录已复制到我的项目目录中(通常是行为)。但是,我需要模块目录更高一级,与项目目录位于同一目录中。这样,我可以与不同项目共享模块,而无需重复和同步工作,从而节省了很多时间(实际上,我不能同时处理多个项目)。

我曾经使用过这个settings.gradle文件:

include ':app', ':androidlib_abc'

project(':androidlib_abc').projectDir = new File(rootProject.projectDir, '../androidlib_abc ')

在AS 3.2.1之前可以完美运行

现在,在我再次成功导入模块并将模块目录上移并再次将settings.gradle文件更改为该目录之后,我再次遇到无法解决依赖错误:'-(

UPDATE2:

使用不带参数rootProject.projectDir的另一个构造函数,可以进行gradle同步。

include ':app', ':androidlib_abc'

project(':androidlib_abc').projectDir = new File('../androidlib_abc')

该库终于在左侧列出了!

但是,出现了一个新问题。无法解析模块中定义的类/方法/字段等。尽管它们甚至位于同一目录(包)中,但它们甚至不在模块本身的类中……清理和重建无济于事。奇怪的是,构建成功了,我显然甚至可以将应用安装在我的设备上,并且可以毫无例外地运行它!!?那么这可能只是一个IDE错误吗?

UPDATE3

我删除了.gradle和.idea目录,然后重新启动了AS。现在一切都好B-)

1 个答案:

答案 0 :(得分:1)

尝试一次构建androidlib_abc。是否可以在侧面菜单中看到此库? 可能是该特定库未​​正确导入