按照这个堆栈溢出答案构建Android库时出错:不支持直接本地.aar文件依赖项为了解决我原来的问题,在我的模块上我创建了一个包含以下内容的build.gradle文件:
configurations.maybeCreate("default")
artifacts.add("default", file('[nameOfTheAar].aar'))
到目前为止,一切都很好。 然后我想扩展它,以便在调试和发布时使用 2 个不同的 aar。我试过:
configurations.maybeCreate("debug")
configurations.maybeCreate("release")
artifacts.add("debug", file('[nameOfTheAar]-debug.aar'))
artifacts.add("release", file('[nameOfTheAar]-release.aar'))
但是配置名称不足以允许自动选择,并且出现以下错误:
Could not determine the dependencies of task ':[moduleName]:buildCMakeDebug[arm64-v8a]'.
> Could not resolve all task dependencies for configuration ':realsense:debugCompileClasspath'.
> Could not resolve project :[submoduleName].
Required by:
project :[moduleName]
> No matching configuration of project :[submoduleName] was found. The consumer was configured to find a library for use during compile-time, preferably optimized for Android, as well as attribute 'com.android.build.api.attributes.BuildTypeAttr' with value 'debug', attribute 'com.android.build.api.attributes.AgpVersionAttr' with value '8.3.1', attribute 'org.jetbrains.kotlin.platform.type' with value 'androidJvm' but:
- Configuration 'debug':
- Other compatible attributes:
- Doesn't say anything about com.android.build.api.attributes.AgpVersionAttr (required '8.3.1')
- Doesn't say anything about com.android.build.api.attributes.BuildTypeAttr (required 'debug')
- Doesn't say anything about its component category (required a library)
- Doesn't say anything about its target Java environment (preferred optimized for Android)
- Doesn't say anything about its usage (required compile-time)
- Doesn't say anything about org.jetbrains.kotlin.platform.type (required 'androidJvm')
- Configuration 'release':
- Other compatible attributes:
- Doesn't say anything about com.android.build.api.attributes.AgpVersionAttr (required '8.3.1')
- Doesn't say anything about com.android.build.api.attributes.BuildTypeAttr (required 'debug')
- Doesn't say anything about its component category (required a library)
- Doesn't say anything about its target Java environment (preferred optimized for Android)
- Doesn't say anything about its usage (required compile-time)
- Doesn't say anything about org.jetbrains.kotlin.platform.type (required 'androidJvm')
所以它看起来需要一个 BuildTypeAttr 设置类型的属性,我已经尝试了以下内容,但它不是正确的语法/它不起作用:
configurations.maybeCreate("debug").attributes { it.attribute(BuildTypeAttr, "debug")}
configurations.maybeCreate("release").attributes { it.attribute(BuildTypeAttr, "release")}
artifacts.add("debug", file('librealsense-debug.aar'))
artifacts.add("release", file('librealsense-release.aar'))
在配置上设置构建类型属性的正确方法是什么(使用 kotlin 脚本语言)?
这是[子模块]上需要的build.gradle,用于根据构建类型自动选择不同的aar文件:
import com.android.build.api.attributes.*
configurations.maybeCreate("debug").attributes { attribute(BuildTypeAttr.ATTRIBUTE, project.objects.named(BuildTypeAttr.class,"debug")) }
configurations.maybeCreate("release").attributes { attribute(BuildTypeAttr.ATTRIBUTE, project.objects.named(BuildTypeAttr.class,"release")) }
artifacts.add("debug", file('[nameOfTheAar]-debug.aar'))
artifacts.add("release", file('[nameOfTheAar]-release.aar'))
这允许您的[模块]中只有一行导入[子模块]
implementation(project(":[submodulename]"))
要点是: