2

私は 2 つの Android プロジェクトを持っています。1 つは共有ライブラリで、もう 1 つはアプリケーションのプロジェクトです。どちらのプロジェクトにも、Java コードとネイティブ コードが含まれています。APK を実行しようとすると、次のエラーが表示されます。

最終アーカイブの生成エラー: APK の重複ファイルが見つかりました: lib/armeabi/libOEShared.so

私の共有ライブラリは、Java コードを使用できるように、ライブラリ プロジェクト ([プロパティ] -> [Android] -> [Is Library]) としてマークされています。これにより、おそらく 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 には 2 つのコピーが存在します。

アプリケーションのネイティブ コードを自動的に複製せずに libOEShared にリンクするにはどうすればよいですか?

時間をありがとう、これはこれまで私に多くの欲求不満を引き起こしました.

4

1 に答える 1