在主文件夹中
soong_config_module_type {
name: "adv_vs_vda_cc_defaults",
module_type: "cc_defaults",
config_namespace: "adv_vs_vda",
variables: ["adv_or_vda"],
properties: ["cflags", "include_dirs", "static_libs", "whole_static_libs", "srcs", "required"],
}
然后再其他文件中
bootstrap_go_package {
name: "soong-ADV",
pkgPath: "android/soong/ADV",
deps: [
"blueprint",
"blueprint-pathtools",
"soong",
"soong-android",
"soong-cc",
"soong-genrule",
],
srcs:[
"adv.go"
],
pluginFor:["soong_build"],
}
soong_config_module_type_import {
from: "device/AAA/missi/Android.bp",
module_types: [
"adv_vs_vda_cc_defaults",
],
}
adv_vs_vda_cc_defaults{
name: "adv_stack_cc-default",
soong_config_variables: {
adv_or_vda: {
advvda: {
cflags: [
],
}
}
}
}
然后go语言编写
package ADV
import (
"android/soong/android"
"android/soong/cc"
"fmt"
)
func init() {
android.RegisterModuleType("adv_vs_vda_cc_defaults", AdvAduioFeature_Cflag)
}
func AdvAduioFeature_Cflag() (android.Module) {
module := cc.DefaultsFactory()
android.AddLoadHook(module, AdvAduioFeature_Defaults)
return module
}
func AdvAduioFeature_Defaults(ctx android.LoadHookContext) {
type props struct {
Soong_config_variables struct {
Adv_or_vda struct {
Advvda struct {
Cflags []string
}
}
}
}
p := &props{}
p.Soong_config_variables.Adv_or_vda.Advvda.Cflags = []string{"-DAAAAA=1"}
ctx.AppendProperties(p)
}
但是编译失败了,out/host/linux-x86/bin/go/soong-BTIF/pkg/android/soong/BTIF.a
应该是实际的结构并不是这么弄的,哪位大 佬知道该怎么写,万分感谢
可以参考一下:https://android.googlesource.com/platform/build/soong/+/refs/heads/master/android/soong_config_modules.go
“Devil组”引证GPT后的撰写:
参考GPT和自己的思路:根据你提供的代码和错误信息,很难判断是具体哪个环节出了问题。但是根据你的描述,你可能需要进一步排查以下问题:
是否缺少必要的依赖?
根据你提供的代码,有一些依赖的模块和库被列出来了,但是不确定是否缺少必要的依赖。在编译过程中,如果缺少必要的依赖,会导致编译失败。
是否存在语法错误或者逻辑错误?
你提供的代码可能存在语法错误或者逻辑错误,导致编译失败。你可以仔细检查代码,尤其是拼写错误、语法错误、缺少引号等常见错误。
是否使用了不兼容的版本?
你可能使用了不兼容的版本。你需要检查代码中使用的所有库和模块的版本,确保它们是兼容的。同时,你需要检查使用的编译器和构建工具的版本是否兼容。
是否存在文件路径问题?
你提供的代码中使用了一些文件路径,可能存在文件路径问题。你需要确保文件路径正确,尤其是在使用相对路径时需要注意相对路径的起点是哪个目录。
你可以根据这些方向进一步排查问题,或者提供更多的信息和错误信息,以便更好地解决问题。
看下是不是clang编译器导致的问题,修改方法是:
在art/build/Android.common_build.mk ,中将host 默认编辑器使用clang关掉,找到WITHOUT_HOST_CLANG,关闭clang即可
# Host.
ART_HOST_CLANG := false
ifneq ($(WITHOUT_HOST_CLANG),true)
# By default, host builds use clang for better warnings.
ART_HOST_CLANG := false
endif
以下答案由GPT-3.5大模型与博主波罗歌共同编写:
根据您提供的代码,看起来有一些细节问题,下面是一些修改建议:
在 soong_config_module_type
中,module_type
值为 "cc_defaults"
, 但是在注册模块类型的时候使用了 android.RegisterModuleType("adv_vs_vda_cc_flag", AdvAduioFeature_Defaults)
,应该为 android.RegisterModuleType("cc_defaults", AdvAduioFeature_Cflag)
。
在 AdvAduioFeature_Defaults
函数中,ctx.AppendProperties(p)
应该改为 ctx.AppendProperties(p.Soong_config_variables)
。
另外,为了更好的调试,建议添加一些调试输出语句,例如在 AdvAduioFeature_Defaults
函数中添加:
fmt.Println("ADV: AdvAduioFeature_Defaults called")
最后,以下是修改后的代码,仅供参考:
package ADV
import (
"android/soong/android"
"android/soong/cc"
"fmt"
)
func init() {
android.RegisterModuleType("cc_defaults", AdvAduioFeature_Cflag)
}
func AdvAduioFeature_Cflag() android.Module {
module := cc.DefaultsFactory()
android.AddLoadHook(module, AdvAduioFeature_Defaults)
return module
}
func AdvAduioFeature_Defaults(ctx android.LoadHookContext) {
fmt.Println("ADV: AdvAduioFeature_Defaults called")
type props struct {
Soong_config_variables struct {
Adv_or_vda struct {
Advvda struct {
Cflags []string
}
}
}
}
p := &props{}
p.Soong_config_variables.Adv_or_vda.Advvda.Cflags = []string{"-DAAAAA=1"}
ctx.AppendProperties(p.Soong_config_variables)
}
希望对您有所帮助。
如果我的回答解决了您的问题,请采纳!