2013-10-03 39 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