在某些情况下,我需要从Android.bp的android_app
向aaptflags
属性动态附加新标志。我正在尝试类似于这个答案的方法,执行Go脚本(当我添加一些打印时,我可以看到它(,但没有添加标志。
这是我的代码,知道我缺少什么吗?
my_defaults.go
package my_defaults
import (
"android/soong/android"
"android/soong/cc"
)
func aaptFlags(ctx android.BaseContext) []string {
// I will replace this with some logic.
// Returning a fixed value just for sake of simplicity
var cflags []string
cflags = append(cflags, "my_flag_here")
return cflags
}
func myDefaults(ctx android.LoadHookContext) {
type props struct {
aaptflags []string
}
p := &props{}
p.aaptflags = aaptFlags(ctx)
ctx.AppendProperties(p)
}
func init() {
android.RegisterModuleType("my_defaults", myDefaultsFactory)
}
func myDefaultsFactory() android.Module {
module := cc.DefaultsFactory()
android.AddLoadHook(module, myDefaults)
return module
}
Android.bp
bootstrap_go_package {
name: "soong-my_defaults",
pkgPath: "android/soong/my/defaults",
deps: [
"soong",
"soong-android",
"soong-cc"
],
srcs: [
"my_defaults.go"
],
pluginFor: ["soong_build"]
}
my_defaults {
name: "my_defaults",
}
android_app {
name: "MyApp",
defaults: [
"my_defaults",
],
srcs: ["src/**/*.java"],
// I need dinamically append new flags here
aaptflags: [
"some_flags",
],
// ...
}
// ...
感谢
问题可能出在自定义字段的名称上——它是小写的,在go中意味着它是一个私有字段。正如我所看到的,参考示例中的所有字段都是大写的。