NDK学习总结

学习了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目录,这样就完成了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值