NDK环境配置包括最新版及简单实用.docx
《NDK环境配置包括最新版及简单实用.docx》由会员分享,可在线阅读,更多相关《NDK环境配置包括最新版及简单实用.docx(12页珍藏版)》请在冰豆网上搜索。
NDK环境配置包括最新版及简单实用
一、NDK-R7之前的版本的环境配置。
一些下载,可按需要选择:
NDKr7:
Cygwin:
(1.7.11-1)
notepad++:
http:
//notepad-plus-plus.org/download/v5.9.8.html
1、cygwin安装
①运行下载的setup.exe,点Next
②选择安装方式。
选择在线安装,如果有现成离线包时,可选择离线安装
③选择安装目录(Cygwin最终的安装目录)
④设置本地包暂存路径(下载文件存放目录)
⑤设置网络连接方式:
默认直接连接
⑥选择下载站点。
这个速度比较快
⑦选择安装项。
在默认设置下,只需选择Devel(点击列表中Devel,将后面的Default改为Install),其它均为默认状态。
注:
binutils、gcc、gcc-mingw、gdb、make等必装。
⑧漫长等待,直到下载完成
注:
下载完后的包可以备份下,以便以后可以直接离线安装,速度快哦!
⑨为系统添加环境变量(系统属性->环境变量->Path),如我的为C:
/cygwin/bin。
2、cygwin环境验证
①运行Cygwin一次(Cygwin.bat),以便创建一些用户环境文件
②检测
cygwin的版本:
cygcheck-ccygwin
gcc的版本:
gcc-v
g++的版本:
g++-v
make的版本:
make-v
我这里g++没有装好,不过暂时不影响使用。
3、配置NDK路径
①将下载的NDK解压缩到某个目录
②在cygwin的home\<你的用户名>\.bash_profile文件中最后添加:
(可用notepad++或者UltraEdit打开)
NDK=/cygdrive/<你的盘符>/exportNDK,
如我的为NDK=/cygdrive/E/Android/android-ndk-r7bexportNDK
注:
"NDK"这个名字随便起,以后经常用别太长
②验证
重启cygwin,输入:
cd$NDK
可进入ndk对应目录说明设置OK。
生成项目中native方法,编译成so文件。
在eclipse中新建一个android项目,例如testNdk,最低适应版本选1.5以上,以为NDK支持的最低版本就是1.5,我这里选的2.1。
在项目中新建Jni类,示例代码如下:
publicclassJni{
publicnativeintshowRusult(inta,intb);
}
TestNdkActivity类示例代码如下:
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Jnijni=newJni();
intaa=jni.showRusult(4,87);
Log.v("test","aa:
"+aa);
setTitle(jni.showRusult(5,8)+"");
}
将项目编译一下,让系统生成类的class文件,一会要用到。
4、生成.h文件
打开Cygwin,进入项目的bin目录下,
如果之前已经编译过了,那系统应该已经在项目bin目录中生成了classes文件夹,进入这个文件夹。
输入命令javah-classpath.-jni本地类名(包括包名),我的如下
然后可以看到在classes文件夹中已经生成了.h文件。
5、编写C/C++代码
先来看一下生成的king_testNdk_Jni.h
Java_king_testNdk_Jni_showRusult就是我们要在C/C++中实现的方法。
新建一个文件,命名与.h文件保持一致,扩展名为.c。
在这里可以看出,C/C++文件中类的命名方式为Java_包名_类名_方法名
6、生成.so文件
进入NDK安装目录下的sources文件夹,新建一个文件夹testNdk,在其中创建jni文件夹,将生成的.h文件和.c文件copy到里面,然后在里面新建一个文件Android.mk,文件内容如下
在Cygwin中进入刚生成的jni文件夹
输入命令$NDK/ndk-build,出现如下结果,说明编译成功。
现在可以看到,在sources/testNdk文件夹下,生成了libs、obj两个文件夹,将libs文件夹整个复制到android项目中即可。
二、使用NDK-R7版NDK搭建Android开发环境
当然,首先需要搭建好android环境,包括SDK、ADT、eclipse等,具体方法我就不讲了,网上有很多。
然后下载好NDK(必须是R7或者以上版本,我现在的最新版是R7b),直接解压即可。
从R7开始,Windows版本的NDK提供了一个ndk-build.cmd脚本,可以直接利用这个脚本编译。
想要做到这一点,只要为EclipseAndroid工程添加一个Builder,就能实现Eclipse的自动编译NDK。
1、启动Eclipse,新建Android工程(此处名为TestNDK)
2、在项目中新建Jni类,示例代码如下:
publicclassJni{
publicnativeintshowRusult(inta,intb);
}
TestNdkActivity类示例代码如下:
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Jnijni=newJni();
intaa=jni.showRusult(4,87);
Log.v("test","aa:
"+aa);
setTitle(jni.showRusult(5,8)+"");
}
将项目编译一下,让系统生成类的class文件,一会要用到。
3、生成.h文件
启动cmd,进入项目的bin/classes目录下,输入javah包名+类名。
(我这里是javahking.testNdk.Jni)
4、编写C/C++代码
先来看一下生成的king_testNdk_Jni.h
Java_king_testNdk_Jni_showRusult就是我们要在C/C++中实现的方法。
新建一个文件,命名与.h文件保持一致,扩展名为.c。
在这里可以看出,C/C++文件中类的命名方式为Java_包名_类名_方法名
5、生成.so文件
5.1、新建一个文件Android.mk,文件内容如下
这是用来向系统说明你的需求的文件,里面内容的关键字含义请自行查看docs\OVERVIEW.TXT文件。
5.2、在TestNDK工程的根目录下新建文件夹jni,将Android.mk和king_testNdk_Jni.c这两个文件,将其拷贝到TestNDK->jni文件夹下面。
5.3、新建并配置一个Builder
5.3.1、点击Project->Properties->Builders->New,新建立一个Builder。
在弹出的对话框上面点击Program,OK!
5.3.2、在弹出的对话框【EditConfiguration】中,配置选项卡【Main】:
Location中需要填入nkd-build.cmd的路径(NDK安装目录下)。
WorkingDiretcoty中需要填入TestNDK的工程根目录。
5.3.3、在弹出的对话框【EditConfiguration】中,配置选项卡【Refresh】:
勾选“Refreshresourcesuponcompletion”,
勾选“Theentireworkspace”,
勾选“Recuresivelyincludesub-folders”。
5.3.4、在弹出的对话框【EditConfiguration】中,配置选项卡【BuildOptions】:
勾选“Aftera“Clean””,
勾选“Duringmanualbuilds”,
勾选“Duringautobuilds”,
勾选“Specifyworkingsetofrelevantresources”。
点击“SpecifyResources…”勾选TestNDK工程的“jni“目录,Finish!
保存设置,OK!
5.3.5、点击project->clean,勾选“testNdk”,点击OK。
当在console里面看到如图六所示的信息,则表示一切正常,此时就已经是自动编译代码了。
现在应该能看到,项目目录里已经多了两个文件夹obj和libs。
现在理论上obj和jni两个文件夹可以删除了,我们需要的就是libs这个文件夹。
运行项目即可看到效果。