繁体   English   中英

将来自Android.mk的共享库包含到Android.bp的cc_test中

[英]Include shared library from Android.mk into cc_test of Android.bp

我有一个Android.mk,它构建了一些库:

ifeq ($(CONDITION),something)
LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
BDROID_DIR := $(TOP_DIR)system/bt
LOCAL_CFLAGS += \
        -Wall \
        -Werror
LOCAL_SRC_FILES := ...
LOCAL_HEADER_LIBRARIES := libutils_headers
LOCAL_C_INCLUDES += ...
LOCAL_SHARED_LIBRARIES := \
        libcutils \
        liblog
LOCAL_MODULE := libowner-vendor
LOCAL_MODULE_CLASS := SHARED_LIBRARIES
LOCAL_MODULE_OWNER := owner
LOCAL_PROPRIETARY_MODULE := true
include $(BUILD_SHARED_LIBRARY)

include $(call first-makefiles-under,$(LOCAL_PATH))
endif

我想向其中添加一个测试模块,最好是cc_test,因为我希望能够使用atest实用程序对其进行调用。

显然,仅将其添加到“ shared_libs”部分中是不可行的:

Android.bp:

cc_test = {
    proprietary: true,
    name: "libowner-vendor-test",
    cflags: [
        "-Werror",
        "-Wall",
    ],
    srcs: [...],
    shared_libs: [
        ...,
        "libowner-vendor",
    ],
    host_supported: false,
}

目录结构:

+ lib:
- Android.mk
- ... (sources and headers)
+ lib/test:
-- ... (test sources)

我收到一个错误:

.../Android.bp:1:1: "libowner-vendor-test" depends on undefined module "libowner-vendor"

根据Soong文档 ,您不能直接访问Android.mk中定义的模块。

在我们从Make完全转换为Soong之前,Make产品配置必须指定PRODUCT_SOONG_NAMESPACES的值。 它的值应该是Soong导出到Make的名称空间的空格分隔列表,该名称空间由m命令构建。 从Make完全转换为Soong之后,启用名称空间的详细信息可能会更改。

我没有找到有关如何使用PRODUCT_SOONG_NAMESPACES的示例。 但是由于Android.mk是旧版,因此您应该考虑使用AOSP中包含的androidmk工具将Android.mk转换为Android.bp

. build/envsetup.sh
lunch
m androidmk
androidmk path/to/your/Android.mk > path/to/your/Android.bp
mv path/to/your/Android.mk path/to/your/Android.mk.old

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM