GradleModule A是一个android模块,它定义了几种自定义构建类型
android {
buildTypes {
debug {
buildConfigField 'boolean', 'DEV', 'true'
}
internal {
buildConfigField 'boolean', 'INTERNAL', 'true'
}
external {
buildConfigField 'boolean', 'EXTERNAL', 'true'
}
release {
buildConfigField 'boolean', 'RELEASE', 'true'
}
}
}
dependencies {
implementation project(":module-b")
}
Run Code Online (Sandbox Code Playgroud)
GradleModule B是一个只有 kotlin/java 的模块:
apply plugin: 'kotlin'
apply plugin: 'com.android.lint'
dependencies {
}
Run Code Online (Sandbox Code Playgroud)
模块 A 依赖于模块 B:
// Module A build.gradle
dependencies {
implementation project(":module-b")
}
Run Code Online (Sandbox Code Playgroud)
在Module B来源中,我需要知道它究竟是如何被消耗的Module A,电流buildType是多少Module A:这是“调试”,“内”,“外”或“释放”?
理想情况下,我希望BuildConfig.java使用Module B类似于 Android Gradle 插件提供的插件,但如果这是不可能的,我希望至少有某种方法来确定非 android 模块中的构建类型。
编辑另一个例子来说明这一点:假设有一个“应用程序”模块和 10 个纯 Java 模块。当我执行 'app:assembleExternal' 任务时,在所有 10 个仅限 Java 的模块中,我想知道它是正在构建的“外部”构建类型。
一种方法是实现使用gradle.taskGrpah.whenReady内部检查 Gradle taskGraphModule B并检查是否:module-a:assembleDebug是其中的一部分,然后设置一个参数值,DEBUG然后 Gradle 插件可以获取该参数值com.github.gmazzo.buildconfig,然后创建一个BuildConfig.java被编译的文件进入Module B输出工件。
不使用 android-library 插件也可以做到这一点,老实说我觉得实现起来很烦人。令人烦恼的部分是,该变体是在某个地方决定或解决的,在我看来,这是不容易通过代码访问的。
| 归档时间: |
|
| 查看次数: |
430 次 |
| 最近记录: |