windows下eclipse集成cygwin编译android_NDK

来源:互联网 发布:sql case when 编辑:程序博客网 时间:2024/04/19 03:23

http://www.docin.com/p-88450636.html

一、前言

Google Android 发布了 NDK ,引起了很多发人员的兴趣。 NDK 全称: Native Development Kit,官方下载地址:http://androidappdocs.appspot.com/sdk/ndk/index.html

1.         NDK是什么

The Android NDK is a toolset that lets you embed components that make use of native code in your Android applications.

Android applications run in the Dalvik virtual machine. The NDK allows you to implement parts of your applications using native-code languages such as C and C++. This can provide benefits to certain classes of applications, in the form of reuse of existing code and in some cases increased speed.

英语不好的,自己GOOGLE吧。简而言之,NDK就是一套基于C和C++底层开发API的集成工具组件,使用NDK开发编译的应用程序同样可以基于虚拟机Dalvik上“疯跑”。如果你问为啥推出NDK,敝人以为C和C++开发的应用程序其卓越性能不用提了,至少C和C++被反编译的可能性降低了很多,要比JAVA安全保密多了。

2.         ANDROID NDK 带来了什么

a)       一套工具,基于本机编译的C和C++源代码库。

b)       一种部署在ANDROID设备上,可以将so和java一起打包成APK的方法。

c)       A set of native system headers and libraries that will be supported in all future versions of the Android platform, starting from Android 1.5. Applications that use native activities must be run on Android 2.3 or later.(自个理解吧,最好别用GOOGLE,我试过了不是人话。)

d)       NDK集成了交叉编译器,并提供了相应的 mk 文件隔离 CPU 、平台、 ABI 等差异,开发人员只需要简单修改 mk 文件(指出 “ 哪些文件需要编译 ” 、 “ 编译特性要求 ” 等),就可以创建出 so。(此句出自网络)

 

二、“大力神”合体前的准备

1.         集成Cygwin

a)       什么是cygwin

cygwin是一个在windows平台上运行的unix模拟环境,是cygnus solutions公司开发的自由软件(该公司开发了很多好东西,著名的还有eCos,不过现已被Redhat收 购)。它对于学习unix/linux操作环境,或者从unix到windows的应用程序移植,或者进行某些特殊的开发工作, 尤其是使用gnu工具集在windows上进行嵌入式系统开发,非常有用。随着嵌入式系统开发 在国内日渐流行,越来越多的开发者对cygwin产生了兴趣。(出自百度百科)

b)       为啥要集成cygwin

相信你该知道可爱的android是基于linux内核的,所以咱们要基于NDK开发,至少得有一个linux的环境吧。当然你可已选择虚拟机VM,可是如果你是在windows上成长起来的,对Linux的了解程度比我还差的话,那么相信我,还是选择cygwin吧,至少你不用来回切换窗口了。

c)       Cygwin下载与安装

下载地址:http://www.cygwin.com。下载后会保存成setup.exe,双击开始安装。在线安装时首选要选择镜像站点,此处考虑到咱公司的网络现状,建议选择台湾的HTTP站点,http://ftp.ntu.edu.tw。如下图所示

 

组件安装有两种方式可供选择,一是选择必须的组件如devel 下的gcc-core,gcc-g++, make和lib下的glib2,glib2-devel,各位注意要版本号对应,尽量选择最新的版本。具体选择的如下图:

上图中注意左侧skip的刷新图标,点击后会出现install,而右边是选择组件的名称。(相信智商在90以上的都能看懂。)二是选择All后面的回旋图标,这样无论任何组件都将安装,其下载量大概能有1.7G左右。(尽管这是比较脑残的做法,可是目的还是达到了,也不用选择组件了。因为哥就是这么干的!没错,那两天网速慢就是哥干的。)如下图所示:

 

 

2.         下载Android NDK.

官方下载地址:http://androidappdocs.appspot.com/sdk/ndk/index.html。最好下载V1.5以上。下载后直接解压即可。鉴于都属于android 开发,所以最好把其放在android SDK的相同目录下,这样寻找Samples的时候会比较省事。

3.         Eclipse组件

Android SDK 不用说了,这不是重点。ADT也不说了,单说CDT。CDT是Eclipse开发C++的组件包,可以在Eclipse的菜单栏HELP选项里选择Install new software ,然后添加站点http://download.eclipse.org/tools/cdt/releases/galileo,在线安装。有必要说明一下,使用NDK开发包来开发android,是不需要CDT的。但是你如果安装了CDT,会在review其他人写的C++ code时有帮助。

三、大力神正式合体。

1、  确保cygwin v1.71以上安装无误后,找到目录C:/cygwin/etc/defaults/etc/skel下的.bash_profile文件,用记事本打开,在最后面加入下面这句话

ANDROID_NDK_ROOT=/cygdrive/e/android/android-ndk-r5  (此处表示NDK安装目录)

export ANDROID_NDK_ROOT

这句话表示的是添加环境变量,就像windows下添加环境变量。然后注意保存。再打开桌面图标Cygwin,在命令行输入:cd $ ANDROID_NDK_ROOT如下图所示

 

注意环境变量的大小写。回车后会定位至你的NDK安装目录,如下图所示

 

输入命令 :ls –a,会显示目录下的所有文件已验证目录配置正确。如下图所示

 

到此处,如果你没弄出来,不要紧,别慌,要淡定。听哥继续说,请把刚才改写的.bash_profile文件拷贝至目录C:/cygwin/home/admin下,关闭cygwin后并重新启动cygwin。按照上述步骤再验证一回。再不好使,那就是人品问题了。

2、  Eclipse下调试samples

有些同志很喜欢上网去找例子,然后拖下来运行。其实这习惯不好,NDK下有现成的例子如samples文件下的hello-jni。请将NDK下的例子拷贝至wokespace目录下,我的是E:/VSS/android/android-ndk-r5/samples,先拷贝hello-jni。这个helloworld程序员最熟悉不过了。接下来你按部就班选择import 后,发现里面没有项目链接文件。别傻,听哥详解。要选择new—>project-->android projectà接下来如下图所示

 

输入项目名称à选择从源码创建àlocation位置要选择刚才拷贝至workspace下的源码hello-jni。(注意别跟哥学,哥懒了没拷贝源码,直接选择NDK下的samples)。

3、  工程编译

http://blog.163.com/cp7618@yeah/blog/static/702347772011027104219448/

工程目录如下图所示

 

到这步,你的工程可能会报错,不过别慌。请右键选择项目hellojni-->Build path---> config build path--->Builders--->new,如下图所示

 

选择program,配置如下图:

 

我的arguments是:--login -c "cd /cygdrive/E/VSS/android/android-ndk-r5/samples/hello-jni && $ANDROID_NDK_ROOT/ndk-build"

注意选择你自己的真实目录,别抄我的,不然你死定了。

接着配置Refresh选项

 

再配置Build Options选项

 

特别要注意选择specify resources,因为要编译C++,所以必须选择jni目录的C++ code ,如下图所示

 

 

当以上步骤都正确配置无误,保存配置后应该就会自动编译jni目录下的C相关代码并输出相应的.so库文件到工程的libs目录下,libs目录会自动创建。

 

到此全部配置已经结束,欢迎你进入嵌入式开发的初级阶段。

 

转自 http://blog.163.com/cp7618@yeah/blog/static/702347772011026115958730/

原创粉丝点击