![](/img/trans.png)
[英]How to add a folder to an android project sourceset from a gradle plugin
[英]How to add a generated code from build folder to the path in a Gradle Android Library plugin
我有一個 Android 庫模塊,在build.gradle.kts
腳本中,我制作了一個插件 class,在我正在做的插件的 apply 方法中:
import com.android.build.gradle.LibraryExtension
val libExtension = project.extensions.findByType(LibraryExtension::class.java)!!
libExtension.libraryVariants.all {
val variantName = this.name
val sourceDir = "${project.buildDir}/generated/my-plugin/$variantName"
libExtension.sourceSets[variantName].kotlin.srcDir(sourceDir)
}
(variantName 是“debug”或“release”)
我認為這段代碼會將文件夾添加為源文件夾,但它沒有(因此我在文件夾中的 kotlin class 不可用)。
在我的 android 庫模塊的 build 文件夾下:
我的文件夾(不工作/不藍色):
構建目錄中正確工作的文件夾,由另一個插件創建:
好的,所以問題中的代碼有效,我沒那么瘋狂><。
當我將其拆分為演示時,它表明它可以正常工作。
這是不起作用的代碼:
import com.android.build.gradle.LibraryExtension
val libExtension = project.extensions.findByType(LibraryExtension::class.java)!!
libExtension.libraryVariants.all {
val variantName = this.name
val sourceDir = "${project.buildDir}/generated/my-plugin/$variantName"
// This task generates some code and puts it in the sourceDir
val tp = project.tasks.register<MyTask>("${variantName}MyTask")
tp.get().doLast {
libExtension.sourceSets[variantName].kotlin.srcDir(sourceDir)
}
}
我假設“doLast”是阻止它在 IDE 中工作的原因。 我的猜測是,如果我先生成文件,然后將文件夾設置為源集,則不會觸發 IDE 動作。 但是,如果我先將其設置為源集,然后生成文件,它會起作用嗎?
無論如何都把問題留在這里,因為我發現很難找到任何人談論這個問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.