Довольно поздно здесь, но в случае, если кто-то прочитает этот вопрос, один из способов преодолеть проблему неработающих путей (указывая на ndk, вставленный в ваши файлы из jni) - это иметь в папке jni:
include $(call all-subdir-makefiles)
, а затем в каждой его подпапке (libos, libbase и ustils в случае OP) Android.mk этой формы:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_C_INCLUDES := $(LOCAL_PATH)
LOCAL_MODULE := utils
LOCAL_SRC_FILES := one.c
LOCAL_SRC_FILES += two.c
, где этот второй Android.mk входит с однимФайлы .c и two.c в подпапке, найденной в папке jni.
Обратите внимание, что попытка чего-либо как
LOCAL_PATH_BIS_WEIRD_OTHER_NAME := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_C_INCLUDES := $(LOCAL_PATH_OTHER_FUNKY_NAME)
LOCAL_MODULE := utils
LOCAL_SRC_FILES := one.c
LOCAL_SRC_FILES += two.c
снова приведет к сбивающему с толку компилятору, ищущему ваш исходный код, гдендк есть.
Итак, используйте LOCAL_PATH: = $ (call my-dir) ИМЕННО в этой форме в каждом подкаталоге jni и include $ (call all-subdir-makefiles) в самом jni, и у вас не должно быть проблем.
Надеюсь, это кому-нибудь поможет.
Редактировать: это происходит потому, что то, что хранится в LOCAL_PATH, не удаляется с помощью include $ (CLEAR_VARS).