私は 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 にリンクするにはどうすればよいですか?
時間をありがとう、これはこれまで私に多くの欲求不満を引き起こしました.