Android App模块build.gradle.kts导入复合模块类遇未解析引用错误
解决复合构建中无法导入buildplugin模块类的问题
问题原因
使用includeBuild的复合构建模式时,主项目的构建脚本默认不会自动将buildplugin模块的编译产物加入类路径,而buildSrc是Gradle默认自动纳入构建脚本类路径的,因此后者能正常导入目标类。
解决步骤
1. 检查buildplugin模块的文件路径
确保AppVersion.kt的路径与包名严格匹配:
buildplugin/src/main/kotlin/au/com/myproject/AppVersion.kt
2. 修改buildplugin模块的build.gradle.kts
添加java-library插件并配置基础信息,让模块生成可被依赖的库产物:
plugins { `kotlin-dsl` `java-library` // 启用库模式,支持产物被外部依赖 } group = "au.com.myproject.buildplugin" version = "1.0" // 定义版本号,用于后续依赖引用 repositories { google() mavenCentral() } dependencies { compileOnly(gradleApi()) implementation("com.android.tools.build:gradle:8.1.0") implementation(kotlin("gradle-plugin")) } // 适配Gradle 8.x的Java兼容性要求 java { sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 }
3. 在主项目根build.gradle.kts中添加buildscript依赖
将buildplugin模块加入主项目的构建脚本类路径:
buildscript { dependencies { classpath("au.com.myproject.buildplugin:buildplugin:1.0") } } // 保留原有其他配置...
4. 重新同步Gradle
完成上述修改后,执行Gradle同步操作,此时app模块的build.gradle.kts即可正常导入au.com.myproject.AppVersion并使用其常量。
额外说明
如果后续需要将buildplugin扩展为Gradle插件,可基于当前配置进一步改造;仅共享常量的场景下,上述配置已足够解决问题。
内容的提问来源于stack exchange,提问作者Amir
相关产品推荐
相关产品推荐

