Не знаю что толкнуло меня на написание этой заметки, но сегодня я упорно решил собрать "Hello World" под свой Android девайс. Но не как Android приложение, а как нативный linux бинарник, который можно запустить из консоли. Перед тем как собрать что-то свое я потерпел несколько неудач и в процессе начитался всякого. Вот несколько ссылок, которые возможно будут полезны тем, кто озадачится такой же задачей:
- ANDROID HELLO WORLD
- Toolchain install
- Developing in C/C++ with Eclipse Indigo on Windows
- Android NDK for Windows setup guide
- Android C native development using the NDK under Windows
Что-то я почерпнул оттуда, но все оказалось несколько проще. Итак, первое что мы должны сделать это скачать Android NDK. У меня Win 8.1 x64, поэтому я качал версию android-ndk-r10d-windows-x86_64.exe . Далее я не запускал инсталлятор, а просто распковал архив (а это и есть архив) в папку E:\ARM\android-ndk-r10d.
Далее я создал папку с проектом E:\ARM\NDK_PROJECT_PATH, в ней папку jni в которой и разместил следующие файлы:
Application.mk
APP_ABI := armeabi
Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := hello-jni
LOCAL_SRC_FILES := hello-jni.c
#include $(BUILD_SHARED_LIBRARY)
include $(BUILD_EXECUTABLE)
hello-jni.c
После чего даем команду set NDK_PROJECT_PATH=E:\ARM\NDK_PROJECT_PATH , для указания папки с проектом и запускаем ndk-build.cmd в корне NDK:
#include <stdio.h>
int main(int argc, char** argv) {
printf("--------------------------------\n");
printf("Hello World! Android [decker.su]\n");
printf("--------------------------------\n");
return 0;
}
После чего даем команду set NDK_PROJECT_PATH=E:\ARM\NDK_PROJECT_PATH , для указания папки с проектом и запускаем ndk-build.cmd в корне NDK:
Как видим проект успешно собрался. Результат забираем в E:\ARM\NDK_PROJECT_PATH\libs\armeabi\ , там будет собранный бинарник hello-jni. Заливаем его в телефон с помощью ADB, например, так:
adb push E:\ARM\NDK_PROJECT_PATH\libs\armeabi\hello-jni /data/local/tmp/hello-jni
adb shell "chmod 777 /data/local/tmp/hello-jni"
И пробуем запустить либо через терминал на телефоне, либо через ADB. Я покажу скриншот из терминала:
Вот собственно и все. В итоге мы научились собирать приложения для ARM и запускать их на реальном устройстве.
comment 0 التعليقات:
more_vertsentiment_satisfied Emoticon