一、建立工程目录结构:
目录结构示意图:
第一层目录:NDK工程名根目录文件夹
第二层目录:jni
android-ndk-r4b/ndk-build 规定的源码存放文件夹
NDK工程名根目录文件夹
|---Application.mk
|---jni
|---Android.mk
|---*.h
|---*.c
注意:
1.
Application.mk 可选在 jni 目录下;
2.
jni 必须在工程根目录下;
3.
Android.mk 必须在 jni 目录下;
4.
以上的目录和文件的名字注意大小写;
5. C
语言的源代码要放在 jni 目录下;
二、Application.mk
文件内容:
APP_PROJECT_PATH :=
$(call my-dir)/jni
APP_MODULES := 可执行程序名
#注:只有
APP_MODULES := 后面的可执行程序名需要根据实际情况而改变;
例子:
APP_PROJECT_PATH :=
$(call my-dir)/jni
APP_MODULES := test
三、Android.mk
文件内容:
LOCAL_PATH := $(call
my-dir)
include
$(CLEAR_VARS)
LOCAL_MODULE :=
模块名
LOCAL_SRC_FILES :=
模块.c
#编译动态库
#include
$(BUILD_SHARED_LIBRARY)
#编译可执行程序
include
$(BUILD_EXECUTABLE)
例子:
LOCAL_PATH := $(call
my-dir)
include
$(CLEAR_VARS)
LOCAL_MODULE :=
test
LOCAL_SRC_FILES :=
test.c
#编译动态库
#include
$(BUILD_SHARED_LIBRARY)
#编译可执行程序
include
$(BUILD_EXECUTABLE)
四、test.c
文件内容:
#include
int
main(
int argc,
char** argv )
{
printf( "hello android!\nI'm %s!\nI support android
!!\n",
"wzhnsc" );
return 0;
}
五、编译:
1)
进入工程根目录下;
$ cd
~/androidcode/test
2) 执行 $
$NDK/ndk-build 命令;(参见我的另一篇 Ubuntu 下 Android NDK
开发环境搭建)
编译成功会提示如下信息:
warning:
incompatible implicit declaration of built-in function
'printf'
Executable : test
Install : test =>
/home/wzhnsc/androidcode/test/libs/armeabi
六、放入
Android 模拟器执行程序看效果:
1) 执行
~/android-sdk-linux_x86/tools 下的 android 脚本文件
$ cd
~/android-sdk-linux_x86/tools
$
./android
2)
在弹出的“Android SDK and AVD Manager”对话框中 ->
点击左窗格中的“Virtual
Devices” ->
点击右窗格中的[New...]按钮,创建一个名为"Android2.1"的新模拟器;
3)
运行名为"Android2.1"的模拟器
$
./emulator -avd Android2.1
4)
进入 /home/wzhnsc/androidcode/test/libs/armeabi 目录下
$ cd
/home/wzhnsc/androidcode/test/libs/armeabi
5) 在
Android 模拟器中的 /dev 目录下新建一个 test 文件夹
$ adb
shell mkdir /dev/test
6)
将当前目录下的 test 可执行程序文件放入新建的 /dev/test 目录下
$ adb
push test /dev/test/test
7) 对
/dev/test 目录下的 test 可执行程序文件进行可读可写可执行授权
$ adb
shell chmod 0777 /dev/test/test
8) 进入
Android 模拟器 shell 命令行下
$ adb
shell
9) 在
Android 模拟器 shell 命令行下执行 test 可执行程序
# cd
/dev/test
#
ls
test
#
./test
hello
android!
I'm
wzhnsc!
I
support android !!
#
exit
注:android脚本文件、adb 和
emulator 可执行程序均在 ~/android-sdk-linux_x86/tools 下;