我有两个Android项目,一个是共享库,一个是我的应用程序项目。这两个项目都包含一些Java和一些本机代码。当我尝试运行我的APK时,我收到以下错误:
生成最终存档时出错:找到APK的重复文件:lib / armeabi / libOEShared.so
我的共享库被标记为库项目(Properties-> Android->'Is Library'),以便我能够使用它的Java代码。这可能是我一次为libOEShared.so复制的。
为了将我的应用程序本机代码与libOEShared链接,我使用NDK Prebuilds功能。这是我的Android.mk:
#include shared library
include $(CLEAR_VARS)
LOCAL_MODULE := OEShared
LOCAL_SRC_FILES := ../../../Shared/OEShared/libs/armeabi/libOEShared.so
include $(PREBUILT_SHARED_LIBRARY)
#build App library
include $(CLEAR_VARS)
LOCAL_MODULE := OEApp
LOCAL_SRC_FILES := OEApp.cpp
LOCAL_LDLIBS := -llog -lGLESv2 -lz
LOCAL_SHARED_LIBRARIES := OEShared
include $(BUILD_SHARED_LIBRARY)
然而,NDK还将libOEShared复制到我的Application项目的lib文件夹中,导致最终的APK中存在两个副本。
如何将我的应用程序的本机代码链接到libOEShared而不会自动复制?
谢谢你的时间,这给我带来了很多挫折感。
答案 0 :(得分:1)
此处仅需要链接,而不是构建。可以使用LOCAL_LD_LIBS
标志进行链接。你可以试试这个。
LOCAL_LDLIBS := -L$(LOCAL_PATH)/../../../Shared/OEShared/libs/$(TARGET_ARCH_ABI)/ \
-lOEShared