作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以我写了一个 go 文件,它会动态地将一个库附加到 apex_defaults-> multilib -> first -> native_shared_libs; Android.bp
的完整代码可以查看here .但是,我在 out 目录中看不到已编译的 .so 文件,就像生成的其他 lib .so 文件一样。
详细解释:
我想向数组 native_shared_libs 添加一个名为“libabcxtractor”的库;为此我写了一个.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",
}
apex_defaults {
name: "com.android.media-defaults",
java_libs: ["updatable-media"],
defaults: ["my_apex",] //THIS IS TO INCLUDE GO IMPLEMENTATION
multilib: {
.go
是否进行了进一步调查。通过检查路径
out/soong/.bootstrap/soong-my_apex/pkg/frameworks/av/apex/build.a
编译文件.在那里。然而
".so"
libabcextractor
的文件没有生成。对此的任何帮助都会很棒。
libabcextractor
是位于 Prebuilts 路径中的 vendor 库。如果我尝试使用任何其他属于 AOSP 代码并且位于现有
native_static_libs
中的库阵列已经,它也不适用于他们。从这里开始,由于没有适当的文档,我无法进一步调试。
最佳答案
Go 中的反射只能访问导出的结构字段,即以大写字母开头的字段。在您的 First
结构,native_shared_libs
未导出,无法使用反射访问。
由于构建过程使用反射来访问 props
struct,它无法从中找到信息。您可以像这样更改它:
type props struct {
Multilib struct {
First struct {
Native_shared_libs []string
}
}
}
关于android - native 库没有从 golang 条件实现加载到 apex_defaults?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59467685/
所以我写了一个 go 文件,它会动态地将一个库附加到 apex_defaults-> multilib -> first -> native_shared_libs; Android.bp的完整代码可
我是一名优秀的程序员,十分优秀!