提问人:Chris Boyle 提问时间:8/8/2023 最后编辑:Chris Boyle 更新时间:8/10/2023 访问量:67
addGeneratedSourceDirectory 对于生成的 Kotlin 失败?
addGeneratedSourceDirectory fails for generated Kotlin?
问:
这有效,成功生成了一些最终出现在我的应用程序中的 Java,按照这个 AGP 食谱:
variant.sources.java?.addGeneratedSourceDirectory(
project.tasks.register("${variant.name}GenerateBackendsEnum", GenerateBackendsTask::class.java) {
it.jniDir.set(project.layout.projectDirectory.dir("src/main/jni"))
it.outputFolder.set(project.layout.buildDirectory.dir("generated/backendsEnum/${variant.name}"))
},
GenerateBackendsTask::outputFolder
)
那么,当我将任务更改为生成 Kotlin 而不是 Java 时,为什么这不起作用?
variant.sources.kotlin!!.addGeneratedSourceDirectory(
project.tasks.register("${variant.name}GenerateBackendsEnum", GenerateBackendsTask::class.java) {
it.jniDir.set(project.layout.projectDirectory.dir("src/main/jni"))
it.outputFolder.set(project.layout.buildDirectory.dir("generated/backendsEnum/${variant.name}"))
},
GenerateBackendsTask::outputFolder
)
我可以看到任务已注册,并且新目录包含在 中,但是:variant.sources.kotlin!!.all
- 我的任务在应用程序构建期间不会被调用,而在 Java 示例中会被调用
- 如果我显式调用我的任务,生成的 Kotlin 文件会写入磁盘,但后续的应用程序构建仍然不会生成相应的文件,并且该文件中的任何内容在运行时都不可用
.class
我的大部分应用程序仍然使用 Java 格式,但我确实有一个普通的手写 Kotlin 源文件,并且它也成功地内置到应用程序中。app/src/main/kotlin
答:
0赞
Chris Boyle
8/10/2023
#1
坚持使用上面的第一个示例代码,但附加一个编写 Kotlin 的任务似乎工作得很好。(即将 Kotlin 写入 )。variant.sources.java?
我会认为这更像是一种解决方法,直到有任何文档表明这受支持。
评论