【问题标题】:Android - NDK The LOCAL_SRC_FILES for a prebuilt library should only contain one itemAndroid - NDK 预建库的 LOCAL_SRC_FILES 应该只包含一项
【发布时间】:2019-07-05 10:41:05
【问题描述】:

我在我的应用程序中使用了一个 c++ 库。该库在以前的版本中生成一个.a 文件。我的 Android.mk 文件如下:

include $(CLEAR_VARS)
LOCAL_MODULE := libmylib
ifeq ($(TARGET_ARCH_ABI),x86)
    LOCAL_SRC_FILES := path-to/libmylib.a
else
    LOCAL_SRC_FILES := path-to/libmylib.a
endif
include $(PREBUILT_STATIC_LIBRARY)
.......


LOCAL_STATIC_LIBRARIES += mylib
.......

但现在,我构建它并生成 3 个.so 文件。

如何添加包含多个 .so 源的模块?

以下设置无法编译。

include $(CLEAR_VARS)
LOCAL_MODULE := libmylib
LOCAL_SRC_FILES := path-to/libvmylib_shared.so \  path-to/libvmylib_base.so  \ path-to/libvmylib_cr.so
include $(PREBUILT_SHARED_LIBRARY)
.....

LOCAL_SHARED_LIBRARIES += mylib

错误在这里:

预建库的 LOCAL_SRC_FILES 应该只包含一个 项目

【问题讨论】:

  • 将其拆分为三个模块,然后将三个模块全部添加到您的LOCAL_SHARED_LIBRARIES

标签: android android-ndk shared-libraries static-libraries android.mk


【解决方案1】:

一个库就是一个模块。您需要制作多个模块。

include $(CLEAR_VARS)
LOCAL_MODULE := libvmylib_shared
LOCAL_SRC_FILES := path-to/libvmylib_shared.so
include $(PREBUILT_SHARED_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE := libvmylib_base
LOCAL_SRC_FILES := path-to/libvmylib_base.so
include $(PREBUILT_SHARED_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE := libvmylib_cr
LOCAL_SRC_FILES := path-to/libvmylib_cr.so
include $(PREBUILT_SHARED_LIBRARY)

...

LOCAL_SHARED_LIBRARIES := libvmylib_shared libvmylib_base libvmylib_cr

【讨论】:

    【解决方案2】:

    如果你的'if'要定义不同的abi源,试试:

    LOCAL_SRC_FILES := $(TARGET_ARCH_ABI)/libmylib.a
    

    【讨论】:

      猜你喜欢
      • 2017-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-03
      • 2017-02-05
      • 1970-01-01
      • 2013-08-16
      • 1970-01-01
      相关资源
      最近更新 更多