• 把NDK集成到Eclipse



    前言

           最经在看Android方法的基础知识,看到一篇文章(http://www.rbgrn.net/content/348-get-your-eclipse-integrated-ndk-on)介绍如何把AndroidNDK集成到Eclipse,顺便就把它翻译过来。

           注:

    • 技术名称保留不译,比如Cygwin
    • Eclipse(英文版)的界面文本不译,比如按钮(Specify Resources)。
    • 括号内的内容,是我添加的注释。

     

     

    翻译正文:

           Android的游戏开发中,你迟早会发现有必要把部分代码跑得更快。用C写的Android代码比同样的Java版本,快上10~100倍。我可以证实这个事实,在我最新的3D游戏引擎中,我把部分组件用原生程序(即用C/C++写代码,编译成二进制的动态链接库文件)重写。

    这样带来了极大的性能提升,但我们也不得不面对这么一个事实:EclipseJava的开发提供了极佳的支持的同时,对C的开发却极其糟糕。Eclipse不适合C的开发,对吗?错,现在向你展示如何在Eclipse中,建立一个快速的NDK开发环境。

           首先声明一点,Eclipse不仅仅适合于开发Java应用程序。EclilpseJava开发提供了极好的支持,它的设计初衷也是为了Java。但得益于它的设计架构,Eclipse能够为包括C语言在内的任何语言的开发提供支持。一个名为CDT的插件,使得在Eclipse里能对C/C++进行开发。尽管我说得有些过了头。接下来这些,是你所需要的:

    Android NDKNative Development Kithttp://developer.android.com/sdk/ndk/1.6_r1/index.html

    Eclipse CDT(C Development Tooling) http://www.eclipse.org/cdt/

    如果用的是windows操作系统,你需要安装Cygwin,并安装上重要的包(特别是GCCMake)。

           接下来的步骤是:

           安装上述三个包。我把NDK安装到C:/Android_NDK。在后面的文章中,我都默认为该目录是NDK的安装目录。

           为了熟悉NDK,在C:/Android_NDK/apps目录中,你需要配置每个项目的“app”。就像NDK中的例子一样,它们能够正确编译运行,并要求严格的配置。

           测试NDK的办法:

           启动cygwin

           cd /cygdrive/c/Android_NDK

           make APP=hello-jni

           根据上述的步骤,你将能够正确编译。如果cygwin漏装了GCCMake或者其它开发包,你有必要重新安装Cygwin,并且确保全部必要的开发包已经安装。如果你遇到什么特殊的错误,我建议把这些错误报告给NDK用户组。

           一旦NDK能够正常工作,你就能够添加和配置好你的NDK开发项目。参考NDKexample一样,你需要一个详细的build文件(Android.mk),该文件告诉NDK编译器编译什么文件。JNI代码文件通常放在应用程序项目的jni文件夹下。该目录下的Android.mk文件指引NDK编译器如何编译程序。

           在完成这些基本配置后,你会想去写C代码。NDK使用Java标准的JNI技术实现。大量的关于JNI的文档在这里都适用。怎样去编写JNI代码,已经超出了本文的范畴。

           接下来是有用的部分:

           如果开发过NDK程序,你很有可能习惯使用文本编辑器或者vim去编辑的你C/C++代码,然后使用make APP=myapp的命令来编译,接着点击更新在Eclipse中的项目,最后盼望着那已部署上的共享库是最新的。多么痛苦的一件事啊!其实,有一个更好的方法。

           目前,已经安装上了CDT,你就可以在Eclipse中编译你的C/C++文件。右击C/C++源文件,选择使用C/C++编辑器打开,就能够使用CDT编译器了。多友好!因为尚未编译C/C++源文件,你并不清楚代码正确与否。但这也使得你更友好地在一个界面下编辑代码。

           生成项目也是快速而灵活的。你曾经使用过Eclipse的生成器吗?它们是一些可配置的开关,用于执行你所配置的命令和刷新工程资源。以下是我的配置:

           右击你的项目,选择“properties

           在左边的列表中选择“Builders

           在右侧,点击“New…”按钮

           在列表框,选择“Program”作为配置类型;点击“OK”按钮,进入下一个配置对话框。

           命名name为“Native Builder

           选择Location为“c:/cygwin/bin/bash.exe

           Working Directory”为“c:/cygwin/bin

           Arguments”为:

    --login –c “cd /cygdrive/c/Android_NDK && make APP=myapp”

    确保在login前有两个连接号,-c后面的引号。

           接着打开“refresh”的tab面板:

           选中“Refresh resources upon completion

           选择“Specific resources

           点击“Specify resources”按钮,选择你项目的lib目录

           选中“Recursively include sub-folders

           接着打开“Build Options”的tab面板:

           选中“Allocate Console

           选中“Launch in background

           选中“Run the builder After a Clean

           选中“Run the builder During manual builds

           选中“Run the builder During auto builds

           选中“Specify working set of relevant resources

           点击“Specify Resources”按钮,选择你项目的JNI目录,并包含所有的文件。

           点击“OK”按钮。

           这里假设:cygwin安装在c:/cygwinNDK安装在c:/Android_NDK;项目工程名称是“myapp”。根据你的安装配置,相应地替换这些参数。

           你刚刚做了什么呢?你使得,在JNI的目录下,每次修改任何文件,Eclipse都通过cygwin自动启动NDK编译你的工程,并在控制台输出编译信息。当它编译完成,将自动刷新工程输出目录(lib),并触发ADT生成一个新的APK安装包。这一切都极其简便。

           NDK集成到Eclipse,实实在在地加速了我当前项目的开发进度。希望你能够在文本中受益。

     

  • 相关阅读:
    实用JS代码
    javascript-table出现滚动条表格自动对齐
    Javascript-关于for in和forEach
    Javascript-关于break、continue、return语句
    如何编写可怕的Java代码?
    请停止编写这么多的for循环!
    如何优雅地在Stack Overflow提问?
    为什么阿里巴巴Java开发手册中强制要求不要在foreach循环里进行元素的remove和add操作?
    Java异常处理只有Try-Catch吗?
    看完这篇还不会用Git,那我就哭了!
  • 原文地址:https://www.cnblogs.com/xyzlmn/p/3168431.html
Copyright © 2020-2023  润新知