命令行下编译 HelloJni

1)启动 Cygwin 进入 NDK目录
2)执行 ndk-build 生成 so 文件,过程如下:

Administrator@PC-201111101325 ~
$ cd $NDK

Administrator@PC-201111101325 /cygdrive/d/android-ndk-r7
$ cd samples/hello-jni/jni/

Administrator@PC-201111101325 /cygdrive/d/android-ndk-r7/samples/hello-jni/jni
$ ndk-build
Gdbserver : [arm-linux-androideabi-4.4.3] libs/armeabi/gdbserver
Gdbsetup : libs/armeabi/gdb.setup
Compile thumb : hello-jni <= hello-jni.c
SharedLibrary : libhello-jni.so
Install : libhello-jni.so => libs/armeabi/libhello-jni.so

Administrator@PC-201111101325 /cygdrive/d/android-ndk-r7/samples/hello-jni/jni

生成lib目录
命令行下编译 HelloJni_第1张图片

=============================================================================================

直接在Eclipse中编译.so文件

1. 为NDK工程添加Builder
1.1导入工程

1.2选择相应的Project ,点击右键选择Properties,在窗口里选择Builders 。

新增一个“Android NDK Builder”编译配置:




命令行下编译 HelloJni_第2张图片


2. 配置
2.1 在 Main 页面里
Location 栏选择你安装Cygewin时配置的root目录下的 bash.exe 所在路径,
D:\cygwin\bin\bash.exe

在Working Directory 里配置路径为 root下的bin目录的路径
D:\cygwin\bin

最重要的是在Arguments的配置,(注意! NDK r4版本编译C,C++程序的方式做了变化)
--login -c "cd /cygdrive/d/android-ndk-r7/samples/hello-jni/jni && $NDK/ndk-build"

以上参数表示:首先登陆 Cygwin , 然后进入 hello-jni 这个工程下的jni目录(该目录下存放c或c++的文件和 Android.mk)。最后执行 “ndk-build” 命令执行编译。
如果ndk-build命令无法识别,先确认是否成功配置了 NDK 的所在路径(如D:\android-ndk-r7)到Path环境变量里。
命令行下编译 HelloJni_第3张图片 
2.2 在Refresh页,选择The entire workspace

命令行下编译 HelloJni_第4张图片
2.3 在Build Options页如下选择,则可以实现修改C或C++程序后立自动编译生成**.so 文件
同样选择 C或者C++原程序所在目录下的所有文件,作为相关的资源(jni)
选中“Allocate Console”
选中“Run the builder After a Clean”
选中“Run the builder During manual builds”
选中“Run the builder During auto builds”
选中“Specify working set of relevant resources”
点击“Specify Resources”按钮,选择你项目的JNI目录,并包含所有的文件。
点击“OK”按钮。

命令行下编译 HelloJni_第5张图片

注意:如果你配置的编译器在其它编译器下边,记得一定要点Up按钮,把它排到第一位,否则C代码的编译晚于Java代码的编译,会造成你的C代码要编译两次才能看到最新的修改

2.4 环境搭建完毕,

刷新工程或者clean工程控制台会打印:

Gdbserver      : [arm-linux-androideabi-4.4.3] libs/armeabi/gdbserver

Gdbsetup      : libs/armeabi/gdb.setup

Install        : libhello-jni.so => libs/armeabi/libhello-jni.so

则编译成功。

修改C或C++程序后控制台会打印:

Gdbserver : [arm-linux-androideabi-4.4.3] libs/armeabi/gdbserver

Gdbsetup : libs/armeabi/gdb.setup

Compile thumb : hello-jni <= hello-jni.c

SharedLibrary : libhello-jni.so

Install : libhello-jni.so => libs/armeabi/libhello-jni.so

2.5 然后运行虚拟机就能看到结果。

命令行下编译 HelloJni_第6张图片

修改jni\hello-jni.c文件中的 return (*env)->NewStringUTF(env, "Hello from JNI!");

保存自动编译,再运行看输出字符串发生变化。

你可能感兴趣的:(eclipse,c,properties,jni,resources,编译器)