たとえば、「some」という静的ライブラリをビルドしてみましょう。
LibSome Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := some
LOCAL_SRC_FILES := some.c
include $(BUILD_STATIC_LIBRARY)
LibSome Application.mk
APP_MODULES := somelib
APP_OPTIM := release
そして、LibSome/obj/local/armeabi/libsome.aで lib の armeabi バージョンを取得します。
そのため、lib を mainProject jni フォルダーにドロップして使用する必要があります。
MainProject Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := some
LOCAL_SRC_FILES := libsome.a
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/some
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := mainProject
LOCAL_SRC_FILES := mainProject.c
LOCAL_STATIC_LIBRARIES := some
include $(BUILD_SHARED_LIBRARY)
しかし、mips、x86、armeabi-v7a などのさまざまな ABI があり、現在の ndk を追加するだけで、サポートされているすべてのバージョンの somelib を取得できます。
APP_ABI:= all
SomeLib Application.mk に、LibSome/obj/local/armeabi-v7a/libsome.a、LibSome/obj/local/x86/libsome.aなどを取得します
主な質問- 異なる ABI について考えて、mainProjectx86、mainProjectMIPS などのサポートされているすべての ABI に対して異なる ABI ビルド ライブラリを使用してプロジェクトを作成する必要がありますか?
二次的な質問は次のとおりです。
armeabi ABI (デフォルト) のプロジェクトをビルドすると、いくつのデバイスが切り取られますか? armeabi-v7a ABI デバイスで armeabi ABI アプリを実行できますか?
ビルド済みライブラリの異なるセットを持つ 1 つのプロジェクトを持つ方法がある場合は? ameabi-v7a の mainProject をビルドすると、armeabi-v7a ライブラリなどを使用するのでしょうか?