我有两个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/

10-12 00:10
查看更多