Android-本地\u静态\u库中的项未生成

Android-本地\u静态\u库中的项未生成,android,android-source,Android,Android Source,在AOSP中构建静态库时,我在构建依赖模块时遇到问题。将此库称为A,它依赖于另一个静态库B A的Android.mk如下所示: LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := A LOCAL_SRC_FILES := <files...> LOCAL_STATIC_LIBRARIES := B include $(BUILD_STATIC_LIBRARY) 有人能解释一下这句话是什么意思吗?为

在AOSP中构建静态库时,我在构建依赖模块时遇到问题。将此库称为A,它依赖于另一个静态库B

A的
Android.mk
如下所示:

LOCAL_PATH:= $(call my-dir)

include $(CLEAR_VARS)
LOCAL_MODULE := A
LOCAL_SRC_FILES := <files...>

LOCAL_STATIC_LIBRARIES := B

include $(BUILD_STATIC_LIBRARY)
有人能解释一下这句话是什么意思吗?为什么不尝试使用B的
Android.mk
来正确构建B

我知道将静态库打包到另一个库中并不理想,但在这里,我更关心的是,为什么构建系统没有通过B的makefile运行,而它显然是一个依赖项


谢谢大家!

构建系统忽略了许多不相关的语句,
LOCAL\u STATIC\u库
就是一个例子。他们不会将
LOCAL\u STATIC\u库中的每个条目都作为
libA.a
的依赖项写入。相反,他们解释Android.mk文件,为所有目标生成make规则,如果出现依赖关系,它最终也会被构建

因此,对您来说,最简单的解决方法是向您的Android.mk添加一个虚拟共享库,如

LOCAL_PATH:= $(call my-dir)

include $(CLEAR_VARS)
LOCAL_MODULE := A
LOCAL_SRC_FILES := <files...>

include $(BUILD_STATIC_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE := dummyA
LOCAL_SRC_FILES := dummy.c

LOCAL_STATIC_LIBRARIES := B

include $(BUILD_SHARED_LIBRARY)
或者,您可以手动指定依赖项:

$(PRODUCT_OUT)/obj/STATIC_LIBRARIES/libA_intermediates/libA.a: $(PRODUCT_OUT)/obj/STATIC_LIBRARIES/libB_intermediates/libB.a

Re:export\u includes消息,它是处理libB的
LOCAL\u export\u C\u includes
语句的结果。

构建系统忽略许多不相关的语句,
LOCAL\u STATIC\u库
就是一个例子。他们不会将
LOCAL\u STATIC\u库中的每个条目都作为
libA.a
的依赖项写入。相反,他们解释Android.mk文件,为所有目标生成make规则,如果出现依赖关系,它最终也会被构建

因此,对您来说,最简单的解决方法是向您的Android.mk添加一个虚拟共享库,如

LOCAL_PATH:= $(call my-dir)

include $(CLEAR_VARS)
LOCAL_MODULE := A
LOCAL_SRC_FILES := <files...>

include $(BUILD_STATIC_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE := dummyA
LOCAL_SRC_FILES := dummy.c

LOCAL_STATIC_LIBRARIES := B

include $(BUILD_SHARED_LIBRARY)
或者,您可以手动指定依赖项:

$(PRODUCT_OUT)/obj/STATIC_LIBRARIES/libA_intermediates/libA.a: $(PRODUCT_OUT)/obj/STATIC_LIBRARIES/libB_intermediates/libB.a

回复:export\u includes消息,它是处理libB的
LOCAL\u export\u C\u includes
语句的结果。

哦,天哪,这解释了很多。。是否特定于此静态库取决于静态库场景?(如果我构建了一个共享库,其中一个依赖项是静态库,后者实际上将被构建。)当然,正如您在上面的
dummyA中看到的那样,
,这将使静态库成为一个有意义的依赖项。哦,我的天哪,这解释了很多。。是否特定于此静态库取决于静态库场景?(如果我构建了一个共享库,其中一个依赖项是静态库,后者实际上将被构建。)当然,正如您在上面的
dummyA.so
案例中看到的,这将使静态库成为一个有意义的依赖项。