2013-10-03 31 views
2

我有两个Android项目,一个是共享库,一个是我的应用程序的项目。这两个项目都包含一些Java和一些本地代码。当我尝试运行我的APK我收到以下错误:Android库项目与本机代码包库两次在APK

错误产生最终的归档文件:找到重复文件APK:LIB/armeabi/libOEShared.so

我的共享库被标记为库项目(Properties-> Android - >'Is Library'),以便我能够使用它的Java代码。这大概会复制libOEShared.so一次。

为了将我的应用程序本机代码与libOEShared链接起来,我使用了NDK预构建功能。这里是我的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到我的应用程序项目的lib文件夹中,造成两人份存在于最终的APK。

如何将我的应用程序的本机代码链接到libOEShared而不会自动复制?

谢谢你的时间,这给我造成了很多挫折。

回答

1

这里只需要链接,而不是构建。链接可以通过使用LOCAL_LD_LIBS标志完成。你可以试试这个。

LOCAL_LDLIBS := -L$(LOCAL_PATH)/../../../Shared/OEShared/libs/$(TARGET_ARCH_ABI)/ \ 
     -lOEShared 
+0

如果这工作给你,然后接受它作为答案。 – AndRSoid

+0

谢谢你这工作。 – DJPJ