You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio中如何访问Kotlin DSL生成的自定义代码?引用生成代码遇未解析引用问题

Android Studio中如何访问Kotlin DSL生成的自定义代码?引用生成代码遇未解析引用问题

嗨,我看了你遇到的问题,其实核心是sourceSets的配置路径和类型没匹配对,导致Android Studio没把你生成的代码当成项目的源代码目录来识别,所以才会出现未解析引用的问题。咱们一步步来解决:

问题出在哪?

你之前配置的sourceSets路径是"$buildDir/generated/debug/out",但实际生成的代码路径是$buildDir/generated/custom_code/debug/out——明显少了custom_code这一层目录!而且你用了java.srcDir,虽然AS可能兼容识别Kotlin文件,但更规范(也更稳妥)的是用kotlin.srcDir来指定Kotlin源代码目录。另外,你的生成代码是放在debug子目录下的,属于debug变体专属代码,配置到main sourceSet里并不合适,应该针对debug变体来配置。

修正后的配置

把你app级build.gradle.kts里的sourceSets部分改成下面这样:

android {
    sourceSets {
        named("debug") {
            // 补上custom_code层级,并且用kotlin.srcDir指定Kotlin源目录
            kotlin.srcDir("$buildDir/generated/custom_code/debug/out")
        }
    }
}

后续操作步骤

  1. 点击Android Studio右上角的"Sync Project with Gradle Files"按钮,同步项目。
  2. 执行Clean Project -> Rebuild Project,确保生成的代码被正确识别。
  3. 回到MainActivity里,现在应该能正常引用生成的函数了:
import com.example.app.customCode

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        
        // 现在可以正常调用了
        customCode()
    }
}

额外优化建议(可选)

如果以后你想为不同构建变体(比如release)也生成对应代码,可以把自定义Task和变体关联起来,动态生成对应变体的目录,同时给每个变体的sourceSet配置对应的生成路径。不过目前先解决当前问题,这个可以后续再扩展。

备注:内容来源于stack exchange,提问作者sanitizedUser

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 12:13:01