Eclipse集成Android_NDK
Eclipse集成Android NDK说明
2 为什么要用NDK?
以下内容引用自《Pro Android Games》
Some Java developers simply dismiss other languages, especially procedurallanguages like C. I believe
that you should embrace the elegant object oriented features of Java andthe raw power of C and there is
nothing you cannot do in the gaming world.
翻译过来就是:一些Java开发者摒弃了像C一类的过程化语言,但是要知道美女和野兽的结合是最完美的。
相比起Android的开源项目而言,C世界已经积累了很多可供复用的开源项目(包括很多著名的游戏如Quake、DOOM),在执行效率上涉及到大量数学运算的部分也可以考虑由C完成。
3 为什么要集成?
首先考虑一下为什么不集成?
一般来说,集成可以带来快捷,当然,如同IDE一样,集成会让你的脑子退化,好处就是你可以挤出更多的时间去YY。
4 怎样操作?
4.1 预备条件
4.1.1 Cygwin
如果你工作在Windows环境而又不想使用linux环境,可以安装cygwin(http://www.cygwin.com/ ),为了使用gcc注意cygwin的必选安装包在devel目录下:binutils,gcc,make。
Cygwin的更多细节可以从网上获取。
总之,安装完成以后,运行cygwin的快捷方式,在控制台输入命令 gcc和make,有合理的反馈即可(不是SB的command notfound),证明你就可以在伪造的linux下开始造人计划了。
我在cygwin里面加了个环境变量,你也可以考虑加一下,后面方便(写你自己的目录哦):
ANDROID_NDK_ROOT=/cygdrive/e/software/android/android-ndk-r4
export ANDROID_NDK_ROOT
4.1.2 Eclipse
我用的是Galileo版,你的呢?
4.1.3 Eclipse CDT
CDT,就是Eclipse的C/C++环境,在线安装地址 http://download.eclipse.org/tools/cdt/releases/galileo 。
其实我运行一个NDK的例子工程后发现,CDT并不是必须的,不过至少安装CDT后并没有什么坏处,在以后你想尝试QT之类的东东的时候,可以免去这个安装步骤。
4.1.4 Android SDK
主题不是NDK么,为什么要SDK?
NDK是core(音:靠),SDK是壳,或者说SDK给NDK喂草,NDK挤出的是奶。
4.1.5 Android NDK
我下载的是http://dl.google.com/android/ndk/android-ndk-r4-windows.zip最新的版本,下载完解压到一个目录即可,我的是E:\software\android\android-ndk-r4。
以上步骤中,略麻烦的就是cygwin的安装,没有经验的估计要辗转几次。
4.2 开始集成
4.2.1 新建工程
运行Eclipse,新建一个android project,取名hello-jni(或者你喜欢的其他比如fxxk-jni也行)。
工程代码就从你的NDK/samples/hello-jni拷贝一份即可,记得拷贝jni那个目录,最终的目录结构如图。
Libs目录一会会自动创建,现在木有也没关系。
如果你现在运行这个工程,就会在android控制台看到如下错误:
java.lang.UnsatisfiedLinkError:Library hello-jni not found
因为你还没有造出那个libhello-jni.so出来。
4.2.2 工程属性
打开hello-jni工程属性,选择builder,选择program,点OK
配置如下,名字随便取一个,location和working directory要和你的cygwin目录一致,arguments要和你的工程目录一致。
我的arguments是:--login -c "cd/cygdrive/e/workspace/hello-jni && $ANDROID_NDK_ROOT/ndk-build"
上面的图片应该看得清吧,然后勾选其他配置如下
注意在勾选Specifyworking set of relevant resources时指定资源选择你的工程的jni目录即可。
当以上步骤都正确配置无误,保存配置后应该就会自动编译jni目录下的C相关代码并输出相应的.so库文件到工程的libs目录下,libs目录会自动创建。
编译时控制台输出类似如下:
再运行工程,结果正确。
以后修改了C代码,保存后也会自动触发编译,省时省力。
Eclipse集成Android_NDK的更多相关文章
- 记录一次bug解决过程:eclipse集成lombok插件
一 总结 eclipse集成插件lombok: 启动Spring Boot项目: sublime全局搜索关键字:ctrl + shift + F JDK8中的lambda表达式使用 二 BUG描述:集 ...
- maven之一:maven安装和eclipse集成
maven作为一个项目构建工具,在开发的过程中很受欢迎,可以帮助管理项目中的bao依赖问题,另外它的很多功能都极大的减少了开发的难度,下面来介绍maven的安装及与eclipse的集成. maven的 ...
- [Eclipse] - 集成JBoss7热加载和自动发布
使用Eclipse + JBoss开发时,总是要重启项目或JBoss,烦人.下面方法可以很简单的实现Eclipse + JBoss热加载和自动发布. 我的环境是JBoss 7.1.1 Final 1) ...
- maven2 + tomcat6 + eclipse集成配置
转载:http://wenku.baidu.com/view/d64147c676eeaeaad1f330d4.html?re=view /*maven2 + tomcat6 + eclipse集成配 ...
- eclipse集成jetty开发web项目(不采用maven方式)
以前开发过程部署项目都是采用tomcat,偶然发现jetty,所以试了下,挺方便的,直切主题. 1.下载jetty,楼主使用的jetty8,地址http://download.eclipse.org/ ...
- [国嵌笔记][019][Eclipse集成开发环境]
Eclipse集成开发环境的作用 可以编译程序,也可以对程序进行在线调试 集成开发环境 1.JLink连接开发板的JTAG 2.JLink连接PC的USB 3.eclipse软件 4.gdb serv ...
- eclipse集成dorado5插件
dorado5最好使用jdk1.6 32位,与eclipse j2ee indigo版本兼容最好.其他eclipse版本貌似view编辑时按钮点击事件不生效... 现附上安装包链接(均为官方版本): ...
- Jetty入门(1-2)eclipse集成jetty插件并发布运行应用
一.eclipse集成jetty插件 1.从市场安装jetty插件 2.使用jetty插件发布应用和配置运行环境 debug配置默认共用上述run配置 3.使用jetty插件启动运行和停止运行选中的应 ...
- Java-Maven(四):Eclipse集成Maven环境配置
一般maven都需要集成到IDE上使用的,而不是单独的使用,常见的maven可集成IDE:eclipse.IntelliJ IDEA.但这里就只学习eclipse集成maven的基础上,进行maven ...
随机推荐
- iOS开源加密相册Agony的实现(三)
简介 虽然目前市面上有一些不错的加密相册App,但不是内置广告,就是对上传的张数有所限制.本文介绍了一个加密相册的制作过程,该加密相册将包括多密码(输入不同的密码即可访问不同的空间,可掩人耳目).Wi ...
- HA机制下的Hadoop配置
[版权申明:本文系作者原创,转载请注明出处] 文章出处:http://www.cnblogs.com/sdksdk0/p/5585355.html 作者: 朱培 ID:sdksdk0 ----- ...
- Android艺术开发探索第三章——View的事件体系(上)
Android艺术开发探索第三章----View的事件体系(上) 我们继续来看这本书,因为有点长,所以又分了上下,你在本片中将学习到 View基础知识 什么是View View的位置参数 Motion ...
- pycallgraph 追踪Python函数内部调用
安装 安装pycallgraph 安装依赖 使用 待测脚本 追踪脚本 追踪结果 高级篇 隐藏私密函数 控制最大追踪深度 总结 GitHub上好代码真的是太多了,名副其实的一个宝藏.但是最近自己也反思了 ...
- Spark UI界面原理
当Spark程序在运行时,会提供一个Web页面查看Application运行状态信息.是否开启UI界面由参数spark.ui.enabled(默认为true)来确定.下面列出Spark UI一些相关配 ...
- Android学习路线指南
看到这位大牛的博文,不禁得感概,我最近也遇到了很多问题,内心彷徨不堪,转载大牛这篇博文,是为了更好的勉励自己.原文地址在最后面. 前言 看到一篇文章中提到"最近几年国内的初级Android程 ...
- [ExtJS5学习笔记]第二十七节 CMD打包错误 Error C2009: YUI Parse Error (identifier is a reserved word => debugger;)
本文地址:http://blog.csdn.net/sushengmiyan/article/details/41242993 本文作者:sushengmiyan ------------------ ...
- Android简易实战教程--第七话《在内存中存储用户名和密码》
首先是配置文件: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns ...
- Linux2.6 --系统调用处理程序
用户空间的程序无法直接执行内核代码.它们不能直接调用内核空间中的函数,因为内核驻留在受保护的地址空间上.如果进程可以直接在内核的地址空间上读写的话,系统的安全性和稳定性将不复存在. ...
- 海量数据处理算法(top K问题)
举例 有一个1G大小的一个文件,里面每一行是一个词,词的大小不超过16字节,内存限制大小是1M.返回频数最高的100个词. 思路 首先把文件分开 针对每个文件hash遍历,统计每个词语的频率 使用堆进 ...