Я пытаюсь создать статическую библиотеку, используя последнюю версию Android NDK (r5), и мне не везет.Я смог собрать и запустить примеры (например, HelloJni) без каких-либо проблем, но начать новый проект с нуля было совсем другой историей.
В этом эксперименте я пытаюсьсборка libpng.Моя структура папок выглядит следующим образом:
root
|
+--- jni
|
+---- Android.mk ( one line: "include $(call all-subdir-makefiles)" )
|
+---- png
|
+---- Android.mk ( see below )
|
+---- { a bunch of .c and .h files )
Итак, у меня есть два Android.mks.Один для построения всех подпроектов и один для подпроекта libpng.root / jni / png / Android.mk выглядит следующим образом:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := png
MODULE_PATH := $LOCAL_PATH
LOCAL_SRC_FILES := $(wildcard $(LOCAL_PATH)/*.c)
LOCAL_C_INCLUDES := $(wildcard $(LOCAL_PATH)/*.h)
LOCAL_INTERMEDIATE_TARGETS += junk
junk:
echo $(LOCAL_SRC_FILES)
include $(BUILD_STATIC_LIBRARY)
Эта настройка сборки, похоже, ничего не делает (т.е. запуск ndk-build из корневой папки ничего не делает, даже после очистки ndk-build),Подробный прогон (ndk-build V = 1) показывает некоторые вызовы rm -f (удаление несуществующих папок), но ничего не связанного с проектом или подпроектом.
Мне очень интересно, почему этот скрипт сборки не работает, но процесс должен быть тривиальным, поэтому я уверен, что в нем нет ничего ужасно интересного.Меня гораздо больше интересует, как я могу начать самостоятельно атаковать ошибки сборки.Вызов echo в приведенном выше сценарии никогда не срабатывает - я понятия не имею, как определить, какие значения или почему он пропускает подпроект.Кто-нибудь нашел способ узнать, что система сборки пытается сделать?
Мне также было бы интересно узнать, есть ли документы для этих инструментов или это всего лишь несколькотекстовые файлы в папке документов NDK?Я пытался решить эту проблему, копируя фрагменты случайных Android.mk, которые я нашел по поиску, но только несколько команд, использованных в простых примерах NDK, по-видимому, документированы, поэтому опыт фактически только что поднял новые вопросы.