首页 > 解决方案 > 将 kotlin 导入我的子模块时同步失败

问题描述

我尝试在我的子模块中导入 kotlin:

项目层

...
buildscript {
    ext.kotlin_version = '1.3.21'
    repositories {
        jcenter()
        mavenCentral()
        maven {
            url 'https://maven.google.com/'
            name 'Google'
        }
    }
    dependencies {
        ...
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}
...

模块级

apply plugin: 'kotlin-android'
...
dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    ...
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
}

在我尝试同步后,我收到了这个错误:

ERROR: Unable to resolve dependency for ':app@develop/compileClasspath': Could not resolve project :libraries:Foundation.
Show Details
Affected Modules: app

和堆栈跟踪:

Caused by: java.lang.NullPointerException
        at com.google.common.collect.UsingToStringOrdering.compare(UsingToStringOrdering.java:33)
        at org.gradle.api.internal.attributes.DefaultDisambiguationRuleChain$ExceptionHandler.handleException(DefaultDisambiguationRuleChain.java:99)
        at org.gradle.api.internal.attributes.DefaultDisambiguationRuleChain$ExceptionHandler.handleException(DefaultDisambiguationRuleChain.java:87)
        at org.gradle.internal.action.InstantiatingAction.execute(InstantiatingAction.java:44)
        at org.gradle.api.internal.attributes.DefaultDisambiguationRuleChain.execute(DefaultDisambiguationRuleChain.java:75)
        at org.gradle.api.internal.attributes.DefaultDisambiguationRuleChain.execute(DefaultDisambiguationRuleChain.java:38)
        at org.gradle.api.internal.attributes.DefaultAttributesSchema$MergedSchema.disambiguate(DefaultAttributesSchema.java:183)
        at org.gradle.internal.component.model.MultipleCandidateMatcher.disambiguateWithAttribute(MultipleCandidateMatcher.java:215)
        at org.gradle.internal.component.model.MultipleCandidateMatcher.disambiguateWithRequestedAttributes(MultipleCandidateMatcher.java:202)
        at org.gradle.internal.component.model.MultipleCandidateMatcher.disambiguateCompatibleCandidates(MultipleCandidateMatcher.java:192)
        at org.gradle.internal.component.model.MultipleCandidateMatcher.getMatches(MultipleCandidateMatcher.java:111)
        at org.gradle.internal.component.model.ComponentAttributeMatcher.match(ComponentAttributeMatcher.java:123)
        at org.gradle.api.internal.attributes.DefaultAttributesSchema$DefaultAttributeMatcher.matches(DefaultAttributesSchema.java:156)
        at org.gradle.internal.component.model.AttributeConfigurationSelector.selectConfigurationUsingAttributeMatching(AttributeConfigurationSelector.java:40)
        at org.gradle.internal.component.model.LocalComponentDependencyMetadata.selectConfigurations(LocalComponentDependencyMetadata.java:117)
        at org.gradle.internal.component.local.model.DslOriginDependencyMetadataWrapper.selectConfigurations(DslOriginDependencyMetadataWrapper.java:60)
        at org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.builder.EdgeState.calculateTargetConfigurations(EdgeState.java:166)
        ... 105 more

我的毕业版本:

distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.1-all.zip

我搜索了很多,但我找不到问题的原因和解决方案。有没有人遇到和我一样的问题??

标签: androidkotlinandroid-gradle-plugin

解决方案


我找到了解决方案,但我不知道为什么......

在我的基础模块中

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

在我的应用程序模块中

buildTypes {
    ...
    test {
        ...
        matchingFallbacks = ['release', 'debug']
    }
}

在我删除了基础模块中的matchingFallbacks或kotlin-plugin中的“调试”后,它工作正常。


推荐阅读