Android NDK -如何一次性构建静态库



在我的Android应用程序中,我有相当多的开源c++项目是作为静态库构建的。从本质上说,Android。Mk将所有库构建为静态的,并将它们链接起来创建我的最终核心。所以图书馆。

我们的夜间构建会从源代码控制中检出一个干净目录下的所有文件,并构建所需的所有文件。

我正在考虑如何优化我们的夜间构建。由于第三方代码不会更改(可能每六个月更改一次),我希望只构建它们一次,并检入生成的库。我猜这些lib会有一个"。一个"扩展。每日构建将简单地检查这些库并将它们链接到我的最终核心。

基本上,我希望我可以打破我现有的Android。将Android . js . js . mk分成两个不同的库——一个用于构建静态库,另一个用于构建Android代码可以使用的最终共享库。

我想知道这是否可能。的问候。

您正在寻找预构建库支持

假设你的静态库声明看起来像这样:

include $(CLEAR_VARS)
 LOCAL_MODULE := foo
 LOCAL_SRC_FILES := foo/foo.c
 LOCAL_EXPORT_CFLAGS := -DFOO=1
include $(BUILD_STATIC_LIBRARY)

您可以使用预构建的

include $(CLEAR_VARS)
 LOCAL_MODULE := foo
 LOCAL_SRC_FILES := libs/foo.a
include $(PREBUILT_STATIC_LIBRARY)

和include在核心库中完全相同:

include $(CLEAR_VARS)
 LOCAL_MODULE := myCore
 LOCAL_SRC_FILES := core/core.c
 LOCAL_STATIC_LIBRARIES := foo
include $(BUILD_SHARED_LIBRARY)

所以你可以有一个独立的Android。,或者直接使用条件变量。

ifeq ($(USE_PREBUILT_LIBS),)
 # declare with BUILD_STATIC_LIBRARY
else
 # declare with PREBUILT_STATIC_LIBRARY
endif

最新更新