a_g*_*irl 5 android android-soong
我有一个 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
Run Code Online (Sandbox Code Playgroud)
我想向其中添加一个测试模块,最好是 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,
}
Run Code Online (Sandbox Code Playgroud)
目录结构:
+ lib:
- Android.mk
- ... (sources and headers)
+ lib/test:
-- ... (test sources)
Run Code Online (Sandbox Code Playgroud)
我收到一个错误:
.../Android.bp:1:1: "libowner-vendor-test" depends on undefined module "libowner-vendor"
Run Code Online (Sandbox Code Playgroud)
根据Soong 文档,您无法直接访问 Android.mk 中定义的模块。
在我们从 Make 完全转换为 Soong 之前,Make 产品配置需要指定 PRODUCT_SOONG_NAMESPACES 的值。它的值应该是一个以空格分隔的命名空间列表,Soong 将其导出到 Make 以由 m 命令构建。在我们从 Make 完全转换为 Soong 后,启用命名空间的细节可能会发生变化。
我没有找到如何使用 的示例PRODUCT_SOONG_NAMESPACES。但由于Android.mk它是遗留的,您应该考虑使用 AOSP 中的工具进行Android.mk转换。Android.bpandroidmk
. 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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4251 次 |
| 最近记录: |