长解释:
我想将一个名为“libabcxtractor”的库添加到数组native_shared_libs;为此,我编写了一个.go
文件(按照谷歌的建议),其条件如下所示:
package my_apex
import (
"android/soong/android"
"android/soong/apex"
"fmt"
"strings"
)
func globalFlags(ctx android.BaseContext) []string {
var native_shared_libs []string
if(strings.Contains(ctx.AConfig().DeviceName(), "my_apex_device")){
fmt.Println("Some log to verify condition is getting executed......")
native_shared_libs = append(native_shared_libs, "libabcextractor")
}
return native_shared_libs
}
func myApexFlagsDefaults(ctx android.LoadHookContext) {
type props struct {
Multilib struct {
First struct {
native_shared_libs []string
}
}
}
p := &props{}
p.Multilib.First.native_shared_libs = globalFlags(ctx)
ctx.AppendProperties(p)
}
func myApexFlagsDefaultsFactory() android.Module {
module := apex.DefaultsFactory()
android.AddLoadHook(module, myApexFlagsDefaults)
return module
}
func init() {
fmt.Println("Registering module type....")
android.RegisterModuleType("my_apex_defaults", myApexFlagsDefaultsFactory)
}
为了在构建时能够选择上述条件,我更新了我的Android.bp文件,如下所示:
bootstrap_go_package {
name: "soong-my_apex",
pkgPath: "frameworks/av/apex/build",
deps: [ "soong-apex" ],
srcs: [ "my_apex.go", ],
pluginFor: ["soong_build"],
}
my_apex_defaults {
name: "my_apex",
}
当执行make命令时,我可以看到它进入了条件语句;日志正在打印。我通过.go检查路径来验证我的文件是否已编译,从而进一步进行了调查out/soong/.bootstrap/soong-my_apex/pkg/frameworks/av/apex/build.a。在那。但是,未生成".so"文件。libabcextractor对此的任何帮助都会很棒。
编辑: libabcextractor是驻留在 Prebuilts 路径中的供应商库。如果我尝试使用属于 AOSP 代码一部分且已在现有数组中的任何其他库native_static_libs,它也不适用于它们。从这里开始,由于没有适当的文档,我无法进一步调试。
慕桂英546537
相关分类