私はAndroid NDKでテストアプリを持っています。以前は、提供された静的ライブラリを使ってこのアプリケーションをコンパイルして実行することができました。提供された静的なlibは "libfulllib.a"でした。今、私はラッパー関数を書いており、ラッパー関数のlibを作っています。つまり、 "libwrapper.a"です。私の作業android.mkファイルには、次のようになります。2つのライブラリのマージはアンドロイドでは機能しません。ndk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := rip_test
LOCAL_SRC_FILES := src/rip_test.cpp
LOCAL_CFLAGS := -DCLR_INTERAPTIV_I7 -DCLR_INTERAPTIV -v
LOCAL_C_INCLUDES := \
$(LOCAL_PATH)/../../RIP/include/ \
$(LOCAL_PATH)/../../../hardware/libhardware/include/hardware \
$(LOCAL_PATH)/../../../hardware/libhardware/include \
$(LOCAL_PATH)/src \
$(LOCAL_PATH)/../../RIP/inc \
LOCAL_SHARED_LIBRARIES = libsmem.sastra
LOCAL_LDFLAGS := \
-v \
-L$(ANDROID_PRODUCT_OUT)/system/lib \
-lsmem.$(TARGET_BOARD_PLATFORM) \
-L$(LOCAL_PATH)/../../RIP/library \
-lwrapper \
-lfulllib \
-llog \
-lcutils \
-lipc.$(TARGET_BOARD_PLATFORM) \
# this option will build executables instead of building library for
# android application.
include $(BUILD_EXECUTABLE)
ここでラッパーが私と機能の本当の定義を含むフルによって行われたライブラリです。 私は誰にもfulllibを公開したくないので、すべての ".o"をラッパーと "fulllib"から取り出しました。 「すべて」の図書館を作った。今、私のandroid.mkは次のようになります:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := rip_test
LOCAL_SRC_FILES := src/rip_test.cpp
LOCAL_CFLAGS := -DCLR_INTERAPTIV_I7 -DCLR_INTERAPTIV -v
LOCAL_C_INCLUDES := \
$(LOCAL_PATH)/../../RIP/include/ \
$(LOCAL_PATH)/../../../hardware/libhardware/include/hardware \
$(LOCAL_PATH)/../../../hardware/libhardware/include \
$(LOCAL_PATH)/src \
$(LOCAL_PATH)/../../RIP/inc \
LOCAL_SHARED_LIBRARIES = libsmem.sastra
LOCAL_LDFLAGS := \
-v \
-L$(ANDROID_PRODUCT_OUT)/system/lib \
-lsmem.$(TARGET_BOARD_PLATFORM) \
-L$(LOCAL_PATH)/../../RIP/library \
-lall \
-llog \
-lcutils \
-lipc.$(TARGET_BOARD_PLATFORM) \
# this option will build executables instead of building library for
# android application.
include $(BUILD_EXECUTABLE)
私はコンパイルできますが、テストアプリケーションは同じように動作しません。私は尋ねたい: これはやっても安全ですか?
2つの違いは何ですか? 2つの静的ライブラリをマージ時に問題が発生する可能性があります