Я знаю, что это плохая практика, но как лучше включить двоичный файл в проект Android NDK? Файл должен быть исполняемым с помощью системной команды.
Я не хочу копировать это вручную копировать на устройство, но распространять его в моем .apk.
Достаточно переименовать исполняемый файл в "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, $<, $@)
Других решений пока нет …