Haklısınız, bu İçe Aktarım Modülü örneğidir. Eğer yerel koddan avihi kitaplığı başvuru yolu hala LOCAL_SHARED_LIBRARIES olarak (NDK örnek module-exports bakınız) olacaktır. Ancak, jni/Android.mk
dosyanızda, include
komutunu başka bir dosyaya kullanabilirsiniz. Bu komut, C'daki #include
ifadesine çok benzer. Bu dosya proje ağacınızın içinde olmamalıdır. Aynı örneği alarak, burada işe nasıl olduğunu:
Orjinal Android.mk from samples/module-exports/jni:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := foo
LOCAL_SRC_FILES := foo/foo.c
LOCAL_CFLAGS := -DFOO=2
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/foo
LOCAL_EXPORT_CFLAGS := -DFOO=1
LOCAL_EXPORT_LDLIBS := -llog
include $(BUILD_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := bar
LOCAL_SRC_FILES := bar/bar.c
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/bar
LOCAL_STATIC_LIBRARIES := foo
include $(BUILD_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := zoo
LOCAL_SRC_FILES := zoo/zoo.c
LOCAL_SHARED_LIBRARIES := bar
include $(BUILD_SHARED_LIBRARY)
olarak bakacağız değiştirilen dosya aşağıdaki gibidir:
ZOO_LOCAL_PATH := $(call my-dir)
include ~/projects/bar/jni/Android.mk
LOCAL_PATH := $(ZOO_LOCAL_PATH)
include $(CLEAR_VARS)
LOCAL_MODULE := zoo
LOCAL_SRC_FILES := zoo/zoo.c
LOCAL_SHARED_LIBRARIES := bar
include $(BUILD_SHARED_LIBRARY)
Ve harici bar/jni/Android.mk aşağıdaki gibidir:
Şimdi, bar.c ve foo.c dosyalarının her ikisi de hayvanat bahçesi projesinin ağacının dışında tutulabilir!