Где родной исполняемый файл в моем приложении?

У меня есть проект приложения, который включает в себя собственный код jni (example.c) со следующим make-файлом:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := example
LOCAL_SRC_FILES := example.c
LOCAL_LDLIBS    := -L$(SYSROOT)/usr/lib -llog 

include $(BUILD_EXECUTABLE)

Поэтому я создаю его как исполняемый файл, и все идет хорошо. Исполняемый файл "упакован" с приложением? Если да, как я могу получить его путь или местоположение в памяти, чтобы я мог запустить его из кода Java?

PS: я не собираю нативный код как разделяемую библиотеку, потому что я хочу запускать основную функцию как root с помощью команд оболочки, например:

chmod 777 /path/exe
/path/exe

1 ответ

Создать каталог: /jni и другой каталог /libs, Теперь положи example.c и ваш Android.mk внутри /jni каталог. Сейчас cd к /jni каталог и введите команду ndk-build, Если ваш make-файл правильный и в исходных файлах нет ошибок, то под /libs каталог другой новый каталог под названием /armeabi будет создан. Внутри этого каталога ваш исполняемый файл будет присутствовать.

Для запуска этого исполняемого файла устройство Android должно быть рутировано, или вы можете использовать эмулятор Android, поставляемый с SDK.

Далее вам нужно поместить этот исполняемый файл в /data/local/ местоположение вашего устройства Android (потому что, даже если ваше устройство рутировано, вы не будете иметь разрешения на выполнение из других мест.

Вы можете сделать это используя следующую команду:

adb push example /data/local/

Теперь введите adb shell режим и компакт-диск для /data/local/,

Измените права доступа к файлу: chmod example 777

Теперь в этом же месте вы можете разместить свой файл оболочки. Также вы можете получить доступ к вашей SDCard и другим папкам из этого каталога.

Надеюсь, что это полезно для вас. Если все работает, не забудьте принять ответ.

Другие вопросы по тегам