在 Android AOSP 中使用预建共享库

Use Prebuilt Shared Library in Android AOSP

我想使用 AOSP 中预建的共享库。该库在 Android.mk 中定义如下:

include $(CLEAR_VARS)
LOCAL_MODULE := foo
LOCAL_MODULE_SUFFIX := .so
LOCAL_MODULE_CLASS := SHARED_LIBRARIES
LOCAL_MODULE_TAG := optional
LOCAL_MODULE_PATH := system/lib
LOCAL_SRC_FILE := system/lib/foo.so
include $(BUILD_PREBUILT)

在构建期间,文件夹 out/target/product/mako/obj/SHARED_LIBRARIES/foo_intermediates/export_include 已创建。

但是,构建失败并显示错误消息 out/target/product/mako/obj_arm/SHARED_LIBRARIES/foo_intermediates/export_include 无法找到。

注意 "obj" 和 "obj_arm" 之间的区别。是什么导致了问题?

这是双目标构建(arm 和 arm64),因此有两个 obj 文件夹,一个用于 32 位 arm,另一个用于 64 位 arm。

我需要按如下方式定义库:

include $(CLEAR_VARS)
LOCAL_MODULE := libfoo
LOCAL_MODULE_SUFFIX :=.so
LOCAL_MODULE_CLASS := SHARED_LIBRARIES
LOCAL_MODULE_TAGS := optional
LOCAL_PRELINK_MODULE := false
ifdef TARGET_2ND_ARCH
LOCAL_MULTILIB := both
LOCAL_MODULE_PATH_64 := system/lib64
LOCAL_SRC_FILES_64 := system/lib64/libfoo.so
LOCAL_MODULE_PATH_32 := system/lib
LOCAL_SRC_FILES_32 := system/lib/libfoo.so
else
LOCAL_MODULE_PATH := system/lib
LOCAL_SRC_FILES := system/lib/libfoo.so
endif
include $(BUILD_PREBUILT)