我有两个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而不自动复制它?
谢谢您的时间,到目前为止,这使我感到非常沮丧。
最佳答案
这里仅需要链接,而不是构建。可以使用LOCAL_LD_LIBS
标志进行链接。你可以试试看
LOCAL_LDLIBS := -L$(LOCAL_PATH)/../../../Shared/OEShared/libs/$(TARGET_ARCH_ABI)/ \
-lOEShared
关于android - 在APK中两次包含原生代码包库的Android库项目,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19153037/