以下在 Ubuntu下 编译一个 c 语言 hello world 并在 android 手机或模拟器上执行
进入程序位置
cd ~/pnp5/jni
有三个文件 main.c Android.mk, Application.mk, 内容:
$ cat main.c #include <stdio.h> int main (void) { printf("hello world"); return 0; } ~/pnp5/jni$ cat Android.mk LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) LOCAL_SRC_FILES:= \ main.c LOCAL_MODULE:= pnp5 LOCAL_MODULE_TAGS := optional include $(BUILD_EXECUTABLE) ~/pnp5/jni$ cat Application.mk APP_ABI := all
注:Application.mk 能够没有(怎样你仅仅须要arm程序)
在当前文件夹执行 ndk-build
( 假设没有ndk,去下载一个)
~/pnp5/jni$ ~/android-ndk-r10d/ndk-build [arm64-v8a] Compile : pnp5 <= main.c [arm64-v8a] Executable : pnp5 [arm64-v8a] Install : pnp5 => libs/arm64-v8a/pnp5 [x86_64] Compile : pnp5 <= main.c [x86_64] Executable : pnp5 [x86_64] Install : pnp5 => libs/x86_64/pnp5 [mips64] Compile : pnp5 <= main.c [mips64] Executable : pnp5 [mips64] Install : pnp5 => libs/mips64/pnp5 [armeabi-v7a] Compile thumb : pnp5 <= main.c [armeabi-v7a] Executable : pnp5 [armeabi-v7a] Install : pnp5 => libs/armeabi-v7a/pnp5 [armeabi] Compile thumb : pnp5 <= main.c [armeabi] Executable : pnp5 [armeabi] Install : pnp5 => libs/armeabi/pnp5 [x86] Compile : pnp5 <= main.c [x86] Executable : pnp5 [x86] Install : pnp5 => libs/x86/pnp5 [mips] Compile : pnp5 <= main.c [mips] Executable : pnp5 [mips] Install : pnp5 => libs/mips/pnp5
发如今 与jni 同一级别的 libs 文件夹生成各种 target 的 程序。
在模拟器(真机)上执行
用 adb devices, 检查android是否启动
用 adb push pnp5 data/
用 adb shell 进入设备,而后执行 cd data; chmod 777 pnp5; ./pnp5
hello world 就打印出来了