Короткий вопрос:Android NDK build-host-executable.mk: Нет такого файла или каталога
Я пытаюсь создать приложение, которое имеет зависимость JNI, используя Eclipse, ADT и NDK r10e (ток версия). Зависимость JNI (по-видимому) создает двоичный файл для запуска на хосте сборки, используя build-host-executable.mk
из NDK. Однако этот сценарий, похоже, был удален в последних версиях NDK. Что я делаю?
Длинный вопрос:
Зависимость JNI является platform/external/srec от AOSP, который поставляется с Android.mk
файла (на самом деле, некоторые из них).
Я создал Eclipse для создания собственных частей в соответствии с инструкциями here и скопировал дерево кода JNI в каталог исходного дерева моего приложения jni
. Кроме того, я должен был изменить jni/Android.mk
, добавив следующую строку:
export TARGET_BUILD_TYPE := debug
, который, как я понимаю, будет устанавливаться AOSP набора инструментов, но не устанавливается при сборке из Eclipse.
Однако, я получаю следующее сообщение об ошибке:
android-ndk-r10e/build/core/build-host-executable.mk: No such file or directory
Это вызвано линии в одном из моих Android.mk
файлов:
include $(BUILD_HOST_EXECUTABLE)
НДК определяет BUILD_HOST_EXECUTABLE
в build/core/build-all.mk
:
BUILD_HOST_EXECUTABLE := $(BUILD_SYSTEM)/build-host-executable.mk
Однако build_host_executable.mk
является ab отправленный из каталога build/core
(а также другие сценарии build-host-*.mk
, объявленные в окружающих линиях).
погуглить вокруг немного, я считаю, что этот сценарий, кажется, присутствует в более ранних версиях NDK (по крайней мере до NDK r7 R7b), но, кажется, отсутствует в более поздних версиях (возможно, так как R10b). JNI lib использовался приложением (теперь оставленным) Voice Dial. Последний раз он совершил в декабре 2014 года, хотя последнее реальное изменение кода могло произойти в июне 2014 года. AOSP прекратил строить его к июню 2015 года. Сравнив это с историей выпуска NDK, он, возможно, никогда не был построен против версий NDK позже, чем r9d или, возможно, r10.
NDK r7b Я считаю, что это исправленная версия, к которой добавлена поддержка целевой цели, также см. Также https://github.com/flyskywhy/android-ndk-host. Похоже, поддержка в этом была запланирована в NDK, а некоторые заглушки добавлены, но она никогда не была полностью реализована. Это дает мне возможность либо построить материал хоста с помощью локальной инструментальной цепочки, либо исправить NDK r10e, чтобы добавить целевую поддержку хоста.
С другой стороны, этот пакет был частью AOSP на некоторое время (Cyanogenmod включил его до KitKat и опустил его на Lollipop), поэтому инструментальная цепочка AOSP должна была быть способна ее создать. Любые указатели на эту инструментальную цепочку? Возможно, вы можете извлечь соответствующие части из инструментальной цепочки AOSP и добавить их в пакет.
Что произойдет, если вы уроните последнюю версию build -host-executable.mk в build/core? –
Возможно, попробуйте создать исполняемые файлы хоста без NDK, т. Е. Со стандартным make & gcc? Поскольку они не предназначены для работы на Android, они не могут действительно зависеть от NDK ... их можно было бы построить изолированно. Это потребует де-Android для make-файлов, хотя ... –
@ReubenScratton У меня есть ссылка на r7b по адресу https://github.com/flyskywhy/android-ndk-r7b, вам неизвестны какие-либо более поздние версии? Google, кажется, предлагает только текущий ... – user149408