Во-первых, позвольте мне сказать, что мой ответ зависит от того, используете ли вы NDK r7b (он будет работать и для r7c) в Linux (измените пути соответствующим образом для других систем).
Редактировать: Последнее тестирование с NDK r8e
на Linux и Nexus 4
с adb
с SDK Platform-Tools Rev 18
на Windows 7 (последний на 2013-07-25) без root-доступа .
Еще другое Редактирование: Пожалуйста, прочитайте этот вопрос , чтобы изменить мою инструкцию для собственных двоичных файлов, которые должны работать на Android 5.0 (Lollypop) и более поздних версиях.
- Перейдите к
$NDK_ROOT
(Самая верхняя папка архива NDK в разархивированном виде).
- Копировать
$NDK_ROOT/samples/hello-jni
каталог как $NDK_ROOT/sources/hello-world
.
- Перейти к
$NDK_ROOT/sources/hello-world
.
- Отредактируйте
AndroidManifest.xml
, чтобы присвоить приложению соответствующее имя (это необязательно).
- Перейти к
$NDK_ROOT/sources/hello-world/jni
. Здесь находится исходный код.
- Отредактируйте
hello-jni.c
, удалите весь код и введите свой код hello world
. Мой это: #include
int main( int argc, char* argv[])
{
printf("Hello, World!");
return 0;
}
- Отредактируйте
Android.mk
и измените строку include $(BUILD_SHARED_LIBRARY)
на include $(BUILD_EXECUTABLE)
. Вы также можете изменить строку LOCAL_MODULE
на имя, которое вы хотите для вашего исполняемого файла (по умолчанию hello-jni
)
- Вернуться к
$NDK_ROOT/sources/hello-world
- Запустите
../../ndk-build
, чтобы создать исполняемый файл.
- Скопируйте его с
$NDK_ROOT/sources/hello-jni/libs/armeabi/hello-jni
на /data/local/tmp
на устройстве Android и измените его разрешения на 755 (rwxr-xr-x). Если вы изменили строку LOCAL_MODULE
в $NDK_ROOT/sources/hello-world/jni/Android.mk
, имя исполняемого файла будет новым значением LOCAL_MODULE
вместо hello-jni
. (Все это делается через adb
из Android SDK.)
- Запустите двоичный файл с полным путем как
/data/local/tmp/hello-jni
или как вы его назвали.
И все готово (и вы можете начать с документации в $ NDK_ROOT / docs, чтобы получить лучшее представление о том, что делать).