我在同一项目中有一些具有相同依赖关系且正在构建的应用程序,其中一些需要静态,而其他需要共享。我根据https://github.com/gradle/gradle-native/issues/1017的答案为该错误建立了非常基本的显示,并且实际上得到了相同的错误。这是一个具有2个库的基本项目::1和:2,以及位于:app的cpp应用程序。这会吐出以下错误:
Could not determine the dependencies of task ':app:installDebug'.
> Could not resolve all task dependencies for configuration ':app:nativeRuntimeDebug'.
> Could not resolve project :1.
Required by:
project :app
> Module 'gradletest:1' has been rejected:
Cannot select module with conflict on capability 'gradletest:1:unspecified' also provided by [gradletest:1:unspecified(debugSharedRuntimeElements), gradletest:1:unspecified(debugStaticRuntimeElements)]
> Could not resolve project :1.
Required by:
project :app > project :2
> Module 'gradletest:1' has been rejected:
Cannot select module with conflict on capability 'gradletest:1:unspecified' also provided by [gradletest:1:unspecified(debugSharedRuntimeElements), gradletest:1:unspecified(debugStaticRuntimeElements)]
这是我要打破的样本。我敢肯定,我遵循了github中回答的所有内容,并且仔细阅读了gradle文档中所有我认为可能相关的内容。在我当前的非MVP情况下,我将拥有一个:app2,该链接将:1和:2链接为共享库,因此仅将:1和:2设置为静态将无法解决该问题。
plugins {
`cpp-library`
`cpp-unit-test`
}
library {
linkage.set(listOf(Linkage.STATIC, Linkage.SHARED))
}
plugins {
`cpp-library`
`cpp-unit-test`
}
library {
linkage.set(listOf(Linkage.STATIC, Linkage.SHARED))
dependencies {
implementation(project(":1"))
}
}
plugins {
`cpp-application`
`cpp-unit-test`
}
dependencies {
implementation(project(":1")) {
attributes { attribute(Attribute.of("org.gradle.native.linkage", Linkage::class.java), Linkage.STATIC) }
}
implementation(project(":2")) {
attributes { attribute(Attribute.of("org.gradle.native.linkage", Linkage::class.java), Linkage.STATIC) }
}
}
application {
}
这是在Gradle 5.4.1上完成的,不幸的是,获取更新非常困难,因此我无法测试是否是问题的旧版本。