android-source - 创建 go 脚本以根据条件过滤 Srcs
问题描述
这是参考What is art.go? 为什么它被认为是在 bp 文件中编写条件的一种方式?. 我的用例需要根据条件分离一些源文件。是否有可能实现类似于我们在 .mk 文件中添加的 ifeq 案例
下面是我的示例代码
my_sample.go
package config_variant
import (
"android/soong/android"
)
func globalFlags(ctx android.LoadHookContext) []string {
var Srcs []string
if ctx.AConfig().Getenv("SOME_ENV") == "my_env" {
Srcs = append(Srcs, "<path of the file to be included>")
}
return Srcs;
}
func configVariant(ctx android.LoadHookContext) {
type props struct {
Srcs []string
}
p := &props{}
p.Srcs = globalFlags(ctx)
ctx.AppendProperties(p)
}
func init() {
android.RegisterModuleType("config_variant", variantFactory)
}
func variantFactory() android.Module {
module := android.FileGroupFactory()
android.AddLoadHook(module, configVariant)
return module
}
安卓.bp
bootstrap_go_package {
name :"soong-config_variant",
pkgPath :"android/soong/my/sample",
deps :[
"soong",
"soong-android",
"soong-cc"
],
srcs:[
"my_sample.go"
],
pluginFor:["soong_build"]
}
config_variant {
name: "variant_configurator",
srcs:["<added local class file to be included based on conditon>"],
}
android_app {
....
**defaults:["variant_configurator"]**,
...
}
尝试在 android_app {} 中添加突出显示的语句时出现构建中断 .. 如何通知 android_app 说不要编译这组代码
解决方案
推荐阅读
- javascript - 如何从 HTML 加载带有 cookie 的资源
- sql-server - SQL Server - 有人可以解释这个查询吗?
- python - 运行两次库以在 jupyter 上进行交互式绘图
- firebase - Permission_denied 访问 firebase 数据存储
- git - 向所有分支添加/提交文件
- dataset - 搜索查询日志数据集
- javascript - javascript命名对象中的函数
- android - 如何根据缩放背景图像视图缩放按钮位置?
- react-native - 如何解决看不到ios模拟器的问题?
- maven - 如何加快 maven-deploy-plugin 将工件部署到 Artifactroy?