摸索了好久,Ndk终于配置好可以输出HelloWorld了
分享一下配置过程:
一.首先得要先下载安装NDK,推荐去官网。
我用的是windows64位环境,如果一样的话可以下载我网盘放的
http://pan.baidu.com/s/1bntr4oZ
双击exe文件打开,然后他就会自动解压了
二.打开eclipse,指定NDK路径
这样总的算是配置完了
三.接下来新建一个Android工程试试。
先添加一个本地支持
右键工程,AndroidTools-AddNativeSupport,名字什么的用默认的就行
这时候会多出一个jni文件夹,先不管他,接着下面的步骤
四.给这个工程配置一下NDK
右键工程,或者点击窗口的Project,选中Properties
然后选中Builders-New-Program
先来配置一下main页面,
1.指定ndk目录下的ndk-build.cmd文件,推荐BrowseFileSystem
2.指定需要配置的工程,推荐BrowseWorkspace
然后配置下refresh
这里打上勾,选中图片上的这些就行
最后是配置的是BuildOptions
1.2两处打上勾,这时3处会报错,这就需要点击4处,选择工程然后确定,这样就配置完成了
五.在src下新建一个类试试
1.试试最简单的,单纯地从c获取一个字符串
2.这个时候eclipse自动就编译完成了,文件夹中找到bin目录下的classes目录
cmd进入到该层目录,然后javah 包名.类名
这样就在当前路径下多出一个.h的文件,拷贝该文件,粘贴到eclipse中的jni目录下
这个时候jni目录下应该是有3个文件了,(加上之前add NativeSupport时自动生成的2个文件)
3.由于这里用的是c而不是c++所以下面修改2个地方
1).修改HelloNdk.cpp的后缀名为.c
2).修改Android.mk中的HelloNdk.cpp为HelloNdk.c
4.编辑HelloNdk.c文件,完成后应该是这样的,代码最好是从.h文件中拷过来,然后再做修改
#include "com_aii_ndk_NdkGetter.h" JNIEXPORT jstring JNICALL Java_com_aii_ndk_NdkGetter_getString (JNIEnv *env, jobject obj){ return (*env)->NewStringUTF(env,"hello world from ndk"); }六.这个时候可能会报错,说找不到jni.h、JNICALL等东西的。
既然找不到库文件,就给他导入库
方法如下:
还是找到这个工程的Properties,然后选择c/c++General-Path and Symbols
这个时候右边应该是比较空的,点击add,给他指定一个c/c++库
我选择的路径是这样的:
ndk路径\platforms\android-21\arch-arm\usr\include
完成后,应该就不会报错了,之前的.c文件编辑的时候也能出自动代码提示了
七.大功告成,Project-Clean
运行试试
八.其他说明:
1.在MainActivity中引用了android.support.v7.app包中的类,所以在MainActivity类中javah不好用,还是自己新建一个类比较实在。
2.自动生成的.h代码不要去修改,如果是静态方法,多出的2个参数JNIEnv *,jobject/jclass第一个是虚拟机对象,第二个如果是静态方法就是jclass,否则就是jobject代表当前对象或者当前字节码
现在就知道这么多了。。。