zoukankan      html  css  js  c++  java
  • android 最新 NDK r8 在window下开发环境搭建 安装配置与使用 详细图文讲解,完整实际配置过程记录(原创)

     
    android 最新 NDK r8 在window下开发环境搭建 安装配置与使用 详细图文讲解,完整实际配置过程记录(原创)
    一直想搞NDK开发却一直给其他事情耽搁了,参考了些网上的资料今天终于把环境搭建起来了,把过程记录下来分享给大家。
    内容目录:
    1.默认基础环境
    2.NDK下载与配置
    3.安装Cygwin
    4.用NDK编译
    5.安装CDT插件
    6.安装Sequoyah插件
    7.JNI编译环境配置

    画了一个思维导图让大家一目了然配置过程

     

    -----------------------------------------------
    一、默认基础环境为已经完成Android开发环境的搭建
    本人的环境是 jdk1.6.0_07 、Eclipse3.6(Helios)、Android SDK 、 ADT 可以正常开发android应用。
    要先创建android虚拟机,能够跑一个android应用起来再跑ndk的
     
    二、Android NDK 下载与配置
    下载Android NDK:http://developer.android.com/tools/sdk/ndk/index.html
    最近google的网站打开都很慢 有时候还可能打不开,需要有点耐心。
    选择Windowsandroid-ndk-r8c-windows.zip233787657 bytes (104MB)
    下载后解压缩到你的工作目录,例如:E:androidandroid-ndk-r8,
    samples文件夹下面包含12个实例开发演示项目,是学习的好资源。
     
    三、安装Cygwin
     
    C/C++的编译环境需要Linux的gcc,所以在Windows环境下用Cygwin来模拟Linux
    下载地址:http://cygwin.com/install.html
    随便点击一个 setup.exe 的连接即可下载,这个只是个下载的引导程序,实际内容到下一步才下载,有0.97GB需要的时间比较长的。
    1.运行setup.exe程序,直接点击Next进入下一步。
     
    2.选择安装方式。第一次可以采用Direct Connection在线下载安装,如有现成的离线包,可以选择离线安装(Install from Local Directory)。
     
    3.选择安装目录。比如D:Cygwin,注意此目录是指Cygwin这个虚拟机的安装目录,不是下载文件暂存目录,也不是NDK的目录。
     
    4.设置本地包暂存路径。暂存目录默认是放到setup.exe的同级目录下 我的是http%3a%2f%2fmirrors.163.com%2fcygwin%2f,可以备份下来。

     

     

    注:第一次安装会弹出个警告框,不要管他,点击确认就可以了。 

     
    5.设置网络连接方式。选第一个即可。
     
    6.选择下载站点地址,直接选第一个163的站点就可以了,这个我下载的速度最高可以达到185k。
     
    7.出现加载安装项后,点击Devel-Default,变成Devel-Install,其他设置都不用动,下一步下载。

     

     
    8.等待下载完成,大约需要一个小时左右。下载完成后再点击下一步安装,安装也需要很长时间。

     

     
    9.运行安装目录(D:Cygwin)下的“Cygwin.bat”,输入:“cygcheck -c cygwin”命令,会打印出当前Cygwin的版本和运行状态,如果status是ok的话,则cygwin运行正常。
     
    10.输入:“make –v”和,“gcc –v”命令如果检测成功,会有make和gcc相关版本信息打印出来。
    11.设置NDK路径,在windows的系统环境变量中添加NDK的路径。
    使用“/cygdrive/e/android/android-ndk-r8”这种Linux风格路径,如果使用Windows下的“E:androidandroid-ndk-r8”,Cygwin在编译时会发出警告。
     
    12.运行Cygwin命令行,可以直接使用$ndk环境变量,不用每次都手动输入目录
     
     
    四、使用NDK编译程序:
     
    1)编译NDK提供的sample程序hello-jni(E:androidandroid-ndk-r8sampleshello-jni)。
    1.运行Cygwin,输入“cd $ndk/samples/hello-jni/”,进入到“hello-jni”工程目录。
    2.输入“$ndk/ndk-build”编译。ndk-build是调用ndk的编译程序。

      

    3.用ls命令查看libs/armeabi/下是否生成了so文件,有libhello-jni.so说明ndk运行正常。
    $ ls libs/armeabi/
    gdb.setup  gdbserver  libhello-jni.so
    也可以到E:androidandroid-ndk-r8sampleshello-jnilibsarmeabi目录下看有没有生成的.so文件。

     

     

    2)导入NDK的hello-jni示例到Eclipse中
    1.在Eclipse中新建一个Android工程HelloJni。
    在Create Android Project时勾选“Create project from existing source”,Location中填E:androidandroid-ndk-r8sampleshello-jni

     

     

    2.直接以Android Aplication运行com.example.hellojni.HelloJni项目。要先有.so文件才能运行起来。
     
     
    五、在Eclipse中集成C/C++开发环境CDT
    CDT插件可以在一个工程中同时开发基于C/C++的Native代码和基于Java的代码,加上Sequoyah插件可以一次编译两部分代码。
    下载地址:http://www.eclipse.org/cdt/downloads.php
    不同eclipse版本要下载对应的包,否则安装不了。
    Help-->About Eclipse 下可以看到自己用的版本,我的是 Version: Helios Service Release 2 即Helios版本
    http://www.eclipse.org/downloads/download.php?file=/tools/cdt/releases/helios/dist/cdt-master-7.0.2.zip
    cdt-master-7.0.2.zip:这个是CDT的离线安装包。(由于文件比较大推荐使用离线包,7.0.2的54.8M,8.1.1的103MB)
    安装:Eclipse -> Help -> Install New Software,点击add。
    Name:CDT_版本。

    Location:点击Archive,定位到下载的“cdt-master-7.0.2.zip”文件。

    如果Location的下面出现“Duplicate location”错误,请到Window -> preferences -> Install/Update -> Avaliable Software Site中找到remove掉。
    如果出现缺少eclipse包说明你下载的版本和eclipse版本不匹配,重新下载匹配的重新安装就可以了。

     

    另外需要重启eclipse后才生效。
    安装完成重启后,在Eclispe中新建一个项目,如果出现了C/C++项目,则表明CDT插件安装成功了。

     

    六、安装Sequoyah插件(必须先安装CDT之后才能安装这个,可以直接安装最新版2.0的)
    Sequoyah插件用于设置Android工程对Native开发的支持。
    官方网址:http://www.eclipse.org/sequoyah/downloads/
    打开上面网址就可以看到具体的安装说明了
    Location:http://download.eclipse.org/sequoyah/updates/2.0/
     
    For Helios SR2 Sequoyah version: http://download.eclipse.org/sequoyah/updates/1.0.2/ 
    注:只是安装1.0.2的没有出来“本机开发”的配置所以没法用,本人重新安装了2.0的可以了,这个应该直接安装最新版2.0的就可以了。
    在安装界面不要勾选“Group items by category”复选框,选中出现了列表为空(There are no categorized items)的情况。
     
    在“window –> preferences ->Android -> 本机开发”中添加NDK的路径。

     

    这个插件安装后也需要重启eclipse的
    重启后右键之前建立的“HelloJni”项目,在“Android Tools”选项中包含“Add Native Support…”选项即成功。

     

    七、JNI编译环境配置
    现在修改“/HelloJni/jni/hello-jni.c”文件,动态链接库libhello-jni.so文件不会被重新编译生成。
    需要给JNI项目添加编译配置和依赖库后才行。
    1.转换工程:新建项目,选择“C/C++”下的“Convert to a C/C++ Project(Adds C/C++ Nature)”。进入“下一步”。
    2.选中你刚才建的“HelloJni”工程,下面左边选“Makefile project”右边选“Cygwin GCC”,点击Finish创建项目。
     

     

    3.在“HelloJni”工程上右键,选择“属性”。配置“C/C++ Build”:点击“C/C++ Build”,在右边的“Builder Settings”中去掉默认勾选的“Use default build command”复选框。

    设置Build command为“bash E:androidandroid-ndk-r8 dk-build”。

     

    4.配置依赖库:C/C++ General ->  Paths and Symbols:在Includes下add新的GNU,C依赖路径。
    “HelloJni”工程需要“E:androidandroid-ndk-r8platformsandroid-8arch-armusrinclude”即可,以后根据不同项目选择不同的依赖库。 

     

    5.将“/HelloJni/jni/hello-jni.c”中的字符串“Hello from JNI !”,改为“Hello JNI from ZDZ!”

     

    6.运行后在模拟器上输出的字符串为“Hello JNI from ZDZ!”即说明配置成功。 

     

    到现在你可以在一个工程中同时开发基于C/C++的Native代码和基于Java的代码,开发NDK应用和开发普通android应用感觉不到什么差别了。

     

    欢迎大家评论讨论,如有不清楚的可以在评论里面提出来,将会更新补充清楚,已经补充了部分cygwin安装过程的截图和注意事项。

    有空再整理一篇用NDK移植ffmpeg的文章。 

  • 相关阅读:
    什么是Portal!
    Maven 让事情变得简单
    HTTP协议详解
    函数实现不放在头文件的原因,及何时可以放头文件的情况
    Linux中的内存管理(四)Heap
    寿星万年历Lua实现
    TCP epoll触发后只accept一次带来的问题
    生产者消费者问题
    Windows SDK 实现不规则窗口
    论迭代式的产品开发方法
  • 原文地址:https://www.cnblogs.com/liangxiaofeng/p/3481276.html
Copyright © 2011-2022 走看看