NDK学习总结

来源:互联网 发布:火牛软件下载 编辑:程序博客网 时间:2024/06/05 02:12

学习了NDK有一段时间了,自学真的蛮辛苦的,所以做一下笔记:

如今NDK已经出到了R5了,前段时间一直用android-ndk-1.6_r1-windows这个低版本的。

第一步,使用NDK前必须安装Cygwin,先去网上找个Cygwin最新版本的,才几十兆。然后找到E:/Cygwin/home/Administrator下的.bash_profile文件,在尾部加入

NDK=/cygdrive/E/Android/NDK/android-ndk-r5-windows/android-ndk-r5

export NDK

这个是让Cygwin指定NDK路径输入命令cd $NDK就可以进入到NDK的目录

 

第二步,使用jni编译头文件.h,

 

编译jni时要包含包名,首先进入项目根目录,然后javah -classpath ../TestJni/bin com.test.Test

就是javah -classpath ../项目名/bin com.test.<类名>

 

 

第三步,编译,打开Cygwin,输入命令cd 加上指定项目的jni目录,然后输入$NDK/ndk-build进行编译

 

第四步,添加Android.mk文件,里面属性有

 

LOCAL_MODULE    := FirstJni   这个为项目名

LOCAL_SRC_FILES := hello-jni.c   这个为要编译的c文件,用NDK R5编译成的so前面会自动加上一个lib,但我们在

 static{

    System.loadLibrary("FirstJni");

    }时不需要前面的lib字符串。

 

 

编译成功后控制台出现提示

Compile thumb  : FirstJni <= hello-jni.c

SharedLibrary  : libFirstJni.so

Install        : libFirstJni.so => libs/armeabi/libFirstJni.so

 

如果出现: java.lang.UnsatisfiedLinkError,可能是因为你的c文件中的jninative与java上的工程包名不一样所导致,这样将不能loadLibrary库文件

 

 

接下来是如何将Cygwin,NDK绑定到eclipse上面,右键工程properties选择build选项,new一个program,在location上输入E:/Cygwin/bin/bash.exe,在working directory输入E:/Cygwin/bin/,在Arguments输入

--login -c "cd /cygdrive/D/workspace/FirstJni/jni &&  $NDK/ndk-build"

上面都是我自己电脑的文件目录。切换到refresh标签下,勾选refresh source,转到build Options,勾选allocate,after,3个during,specefy,选择工程中的jni目录,这样就完成了

原创粉丝点击