1. 你得知道,android开发打一开始就是java的事,没其它语言什么事情,就是说google提供的android sdk中的api都是java的api
2. 至于强大的跨平台语言,你懂的,非c/c++莫属,说java是跨平台,那是扯淡,没java虚拟机看你能跑java不, 而c/c++语言是将程序直接编译成本地机器码,这与java这种语言是完全不一样的
那么问题来了,我开发游戏要使用跨平台的语言比如说C++,但是android是用java开发的,我用C++写的代码没法在android下面编译,运行.  将C++程序员拒之门外, google不会做这么蠢的事情

好,第一个问题就是,如何在android下面编译并运行C++写的代码呢
答案就是:在android下面使用ndk编译c/c++

在这里有一些东西要我要给自己科普一下
在java的平台上有一个叫jni的东西,它的功能就是允许java代码与其它语言写的代码进行交互
在NDK r5之前,你想在android下面使用c/c++进行开发,只能写成动态链接库,然后在java中以jni来调用这些库
NDK r5之后,你就可以使用纯C/C++来开发android程序了,这是2011年的事情了
到今天2015年初,有一个问题很多人都搞不懂,为什么在android上面非要搞一个jvm呢,本来嵌入式开发cpu和内存都是很宝贵的资源,而在这方面的控制C/C++做的比JAVA好
至于原因,个人觉得吧,现在硬件厂商实在是太多了,你在PC上面开发程序一般都是跑在同种操作系统下面的,而操作系统屏蔽了这些硬件之间的差异,但是android并没有在系统这一级别屏蔽硬件之间的差异,而是通过JVM来屏蔽硬件之间的差异,也就是说在android系统上面再搞一个jvm系统,也难怪它有一点点慢了
不过最新的android系统已经支持直接使用C/C++编译成本地语言运行,而不在jvm上面运行了,我觉得android还是很有搞头的

好了,现在回头,说说NDK, 前面说了在android使用NDK来将C++代码编译成库,然后由java通过jni来调用这些库
那什么是NDK呢,google官方给的解释就是SDK前面加上Native,那么叫NSDK咯,他想了想,还是叫NDK比较好,这只是称谓而已
那什么是NDK呢,它是一套工具集,允许你用C++语言实现应用的一部分

OK, 我们来创建一个android项目
所有的本地代码都会存储到一个叫jni的文件夹中,打开它来看看吧
有一个Android.mk 文件, 它是用来构建项目的
有一个Application.mk 文件, 它是用来存储编译参数的(虽然它不是必须的)
再创建个ndk-build文件来显示编译过程(同样也不是必须的)

参考文档
http://www.importnew.com/8038.html
http://www.importnew.com/8052.html
http://www.cnblogs.com/qq78292959/category/304331.html        <这个是android ndk翻译系列>

最新文章

  1. django的序列化
  2. 时间类型(DataTime)赋空值
  3. Kooboo中怎么新增一个关联的Details 动态页面。
  4. IList, ICollection ,IEnumerable AND IEnumerator in C#
  5. golang RWMutex读写锁分析
  6. 在C#中interface与abstract class的区别
  7. nodejs应用:文件上传
  8. IIC协议理解(转)
  9. 002 python准备做题的一些准备
  10. Java使用RabbitMQ之公平分发
  11. MFC笔记5
  12. Duplicate Manager Pro for Mac(重复文件查找工具)破解版安装
  13. python-selenium,关于页面滑动的操作
  14. 包与常用模块:time,sys。
  15. PHP+Ajax+plupload无刷新上传头像代码
  16. html中一些莫名的空格
  17. java环境配置错误集锦
  18. tomcat多域名配置(转)
  19. ubuntu 14 root 账户 启用与ssh登录
  20. Linux的cut命令

热门文章

  1. 2012Hulu校园招聘笔试题
  2. r语言 function 指定多个返回值
  3. Python 私有方法和引用计数初讲
  4. 关于Unity中FPS第一人称射击类游戏制作(专题十)
  5. Opengl绘制我们的小屋(二)第一人称漫游
  6. SAP 以工序为基准进行发料 机加工行业 Goods Issue to Routing
  7. 【转载】K-NN算法 学习总结
  8. 第三百六十三节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的mget和bulk批量操作
  9. Spring JDBC调用存储过程
  10. unity-----------------------------关于WheelCollider设置或小车运动的注意事项