ネイティブ サポートを備えた 2 つの Android プロジェクトがあります。つまり、Android プロジェクトと C++ プロジェクトの両方です。1 つは Android ライブラリ ( app-lib ) で、もう1 つはapp-lib に依存する Android アプリ( std-pos-app ) です。
次のようなapp-libの Android.mk ファイル:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := app-lib
LOCAL_SRC_FILES := ...
include $(BUILD_SHARED_LIBRARY)
ビルドすると、libs/armeabi フォルダーに libapp-lib.so が作成されます。
std-pos-appはapp-lib.soのネイティブ コードを呼び出します。したがって、 std-pos-appの Android.mk ファイルは次のようになります。
LOCAL_PATH := $(call my-dir)
#------------------
include $(CLEAR_VARS)
LOCAL_MODULE := app-lib1
LOCAL_SRC_FILES := path-to-libapp-lib/libapp-lib.so
include $(PREBUILT_SHARED_LIBRARY)
#------------------
include $(CLEAR_VARS)
LOCAL_MODULE := std-pos-app
LOCAL_SRC_FILES := ...
include $(BUILD_SHARED_LIBRARY)
PREBUILT_SHARED_LIBRARYを使用して libapp-lib.soを事前ビルドします。std -pos-appがビルドされると、libapp-lib.so と libstd-pos-app.so が libs/armeapi に表示されます。しかし、 std-pos-appを実行したいときに、エラーが発生しました:
最終アーカイブの生成中にエラーが発生しました: APK の重複ファイルが見つかりました: lib/armeabi/libapp-lib.so
Androidプロジェクトの依存関係が原因で、それが起こる理由を知っています。しかし、それを解決する方法は?どうも。