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

  • 相关阅读:
    PointToPointNetDevice doesn't support TapBridgeHelper
    NS3系列—10———NS3 NodeContainer
    NS3系列—9———NS3 IP首部校验和
    NS3系列—8———NS3编译运行
    【习题 7-6 UVA
    【Good Bye 2017 C】 New Year and Curling
    【Good Bye 2017 B】 New Year and Buggy Bot
    【Good Bye 2017 A】New Year and Counting Cards
    【Educational Codeforces Round 35 D】Inversion Counting
    【Educational Codeforces Round 35 C】Two Cakes
  • 原文地址:https://www.cnblogs.com/emyueguang/p/4309687.html
Copyright © 2011-2022 走看看