2

我有两个 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 复制到我的应用程序项目的 lib 文件夹中,导致最终 APK 中存在两个副本。

如何在不自动复制的情况下将我的应用程序的本机代码链接到 libOEShared?

谢谢你的时间,到目前为止,这给我带来了很多挫败感。

4

1 回答 1

1

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

LOCAL_LDLIBS  := -L$(LOCAL_PATH)/../../../Shared/OEShared/libs/$(TARGET_ARCH_ABI)/  \
         -lOEShared
于 2013-12-27T10:01:55.680 回答