zoukankan      html  css  js  c++  java
  • 给自己的android扫盲文

    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翻译系列>

  • 相关阅读:
    使用commonscompress操作zip文件(压缩和解压缩)
    BoneCP的使用
    Struts2多文件上传
    shell 脚本转换 十六进制 十进制 八进制 二进制
    磁盘 I/O 性能监控指标和调优方法
    需求分析的故事——如何练就需求分析的火眼金晴?
    Debian 修改IP地址或DNS
    mysql主从备份
    ThinkPad T400 安装Windows Server 2008详细过程
    debian下,怎么ll命令注册
  • 原文地址:https://www.cnblogs.com/emyueguang/p/4309687.html
Copyright © 2011-2022 走看看