2

I use a c++ library on my app. The library generates an .a file in previous version. My Android.mk file is below:

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
.......

But now, I build it and it generates 3 .so files.

How can I add an module that includes multiple .so sources?

Below settings doesn't compile.

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

The error is here:

The LOCAL_SRC_FILES for a prebuilt library should only contain one item

zakjma
  • 2,030
  • 12
  • 40
  • 81

2 Answers2

3

One library is one module. You need to make multiple modules.

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
Dan Albert
  • 10,079
  • 2
  • 36
  • 79
0

If your 'if' is to define different abi source, try:

LOCAL_SRC_FILES := $(TARGET_ARCH_ABI)/libmylib.a
peerless2012
  • 179
  • 1
  • 7