Как включить бинарный файл в проект Android NDK?

Я знаю, что это плохая практика, но как лучше включить двоичный файл в проект Android NDK? Файл должен быть исполняемым с помощью системной команды.

Я не хочу копировать это вручную копировать на устройство, но распространять его в моем .apk.

1

Решение

Достаточно переименовать исполняемый файл в "lib_myexecutable_.so" и положить его в libs/armeabi папка в корневом каталоге проекта: этот файл будет извлечен диспетчером пакетов на устройстве для /data/data/your.package.full.name/lib, с исполняемыми разрешениями.

Если вы используете ndk-build строить myexecutable, все ./libs/$(TARGET_ARCH_ABI) каталог будет обновлен.

Чтобы автоматизировать операцию переименования, используйте следующее в Android.mk:

... # whatever you have to define the executable
include $(BUILD_EXECUTABLE)
# immediately after this,
all: .libs/$(TARGET_ARCH_ABI)/lib_myexecutable_.so

.libs/$(TARGET_ARCH_ABI)/lib_myexecutable_.so: $(LOCAL_INSTALLED)
<tab>$(call host-mv, $<, $@)
2

Другие решения

Других решений пока нет …