gpt4 book ai didi

android - 如何在 Android.bp 文件中包含预建库?

转载 作者:搜寻专家 更新时间:2023-11-01 07:44:00 25 4
gpt4 key购买 nike

我正在使用 Android-O,我看到大多数 .mk 文件都被 .bp 文件替换了。现在我已经修改了使用 .bp 文件构建的 hardware/interfaces 下的源代码之一。

现在我有一个供源代码使用的预构建共享库。

但我无法弄清楚如何将预构建库包含到 Android.bp 文件中。

任何帮助/意见将不胜感激。

最佳答案

经过一番努力,我找到了解决方案

1) 有一个叫androidmk的工具可以从Android.mk文件中生成Android.bp文件

使用以下命令构建androidmk工具

source build/envsetup.sh
m -j blueprint_tools
Output Path: out/soong/host/linux-x86/bin/androidmk (depending on your host)

像这样为预建库编写普通的 Android.mk 文件

include $(CLEAR_VARS)
LOCAL_MODULE := newlib
LOCAL_SRC_FILES := newlib.so
LOCAL_MODULE_SUFFIX := .so
LOCAL_MODULE_CLASS := SHARED_LIBRARIES
LOCAL_MODULE_PATH := $(TARGET_OUT_SHARED_LIBRARIES)
LOCAL_MODULE_TAGS := optional
include $(BUILD_PREBUILT)

现在运行下面的命令 androidmk Android.mk > Android.bp Android.bp 文件将创建如下

cc_prebuilt_library_shared {
name: "newlib",
srcs: ["newlib.so"],

//ANDROIDMK TRANSLATION ERROR: unspported assignment to LOCAL_MODULE_PATH
//LOCAL_MODULE_PATH := $(TARGET_OUT_SHARED_LIBRARY)
}

2) 现在使用上面的 Android.bp 文件我得到以下错误

**out/target/product/mytest/symbols/system/lib64/newlib.so: no symbols**

所以我加了这个

strip: {
none:true,
}

3) 现在使用新的 Android.bp 我仍然遇到这个错误

**error: newlib.so incompatible target** 

所以我添加了这个(创建了 2 个目录 lib 和 lib64 以及相应的库)

 target: {
android_arm: {
srcs: ["lib/newlib.so"],
},
android_arm64: {
srcs: ["lib64/newlib.so"],
}
},

所以终于有了下面的 Android.bp 文件,我的要求得到了满足

cc_prebuilt_library_shared {
name: "newlib",
target: {
android_arm: {
srcs: ["lib/newlib.so"],
},
android_arm64: {
srcs: ["lib64/newlib.so"],
},
},
strip: {
none:true,
},
}

关于android - 如何在 Android.bp 文件中包含预建库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48578960/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com