前两篇介绍了cocos2d-x 下linux开发环境配置和android 环境配置问题。在这其中遇到很多问题,所以最后一篇分享一下在处理这些问题时,我是如何解决的,是怎么想的。同时总结一些解决这类问题的方式。避免少走弯路。首先通过问题列表的形式来回答一下部署遇到的基本问题。
一、问答列表
1、ubuntu下不能识别手机问题
    这是因为android sdk 中 platform-tools下大adb没有权限访问设备的信息,所以在设备管理器中显示一堆乱码,解决这个问题的方式就是通过su权限去关闭和开启服务。但是一定要注意两次操作都要用sudo,才可以。adb的目录为: sdk/platform-tools/  下,如果你不知道我说的那个sdk的话请移步这篇文章。执行命令为:
sudo ./adb kill-server
sudo ./adb start-server
2、NDK_ROOT 查找不到问题,ADB not responding
    这两个问题其实是一个问题,NDK_ROOT 需要配置在~/.bashrc下。这个就是相当于windows下大user path,配置在这里,每个用户都可以访问到这个变量。是否配置好了需要通过echo $NDK_ROOT验证,若果正确打印出来,说明配置没有问题。但我在运行工程目录下的bulid_native.sh时,始终提示在找不到NDK目录下的
make程序,但是cd到对应目录是可以找到的。到这里令人非常郁闷,就先抛下这个问题。继续查找ADB not responding 的问题,后来找到了问题的关键(https://developer.android.com/sdk/installing/index.html)。原来我是64的系统,所以必须安装一个包。安装好后一切都正常了。包括NDK_ROOT的问题,估计在没安装这个包的时候,是系统找不到正确版本的make程序。安装ia32-libs的命令如下:
apt-get install ia32-libs
3、程序如何识别编译环境问题
    其实这个问题已经困扰我很久,只不过没有遇到这个问题前一直没有深究,在加载eclipse linux项目的时候我选择的编译器是cross gcc,系统默认的。就没有过多注意。结果悲剧就来了。引擎始终识别不了平台类型。问了好友小胖同学,小胖告诉我代码里判断平台代码。其实就是知其所然,不知其所以然。通过看源代码,发现引擎是通过查找系统CC_TARGET_PLATFORM。而这个值是通过编译器来查找的。所以必须选择linux
gcc,才会CC_TARGET_PLATFORM = LINUX。这也是检测平台很好的方法。
4、引用lib问题
     在android工程里需要包含lib文件,其实就是通过ndk将cocos2d的几个库打包成了java可以调用的库。这个容易理解,可以直接把包含lib文件的工程导入进来,也可以直接将生成的lib文件拷贝到自己的lib库文件夹里就可以了。
5、引用头文件问题
     这个问题比较简单,只不过是cocos2d-x自己的目录结构不够好而已。本来 引用coscos2dx根目录就可以了,但是由于cocos2d.h放在根目录的include文件下。要知道编译器在编译阶段根据是<>和""分别去系统目录查找头文件和当前目录查找头文件,如果有目录包含也是以当前目录去查找。后来想了想,也许cocos2dx的目的是不要包含根目录,而是去根目录查找。只要包含cocos2dx所在目录就可以了。从cocos2dx在inlcude所在的目录就明白了。
6、模拟器问题
      模拟器其实问题不大,要注意android sdk的版本,如果和模拟器的版本对不上,就会报错。同时模拟器出现异常,重启是个好方法。因为模拟器这东西不能对其期望太高。何况真机android平台各种假死,异常屡见不鲜。如果配置的模拟器不能满足需求,不要重新编辑保存,而是直接删除重建。因为我编辑保存后,在运行游戏的时候还是报异常,后来在stackoverflow 找到这种问题的处理办法就是删除模拟器,新建模拟器。
二、最终的思考
     通过这一系类的折腾,部署好了环境。现在看我在这写文章很轻松,其实我自己在处理这些问题并不轻松。所以我在想为啥会遇到这些问题?如何避免这种问题发生。因为在之前很多的开源项目,在我部署的时候也是问题重重。
     1、linux 并不是大众平台,从一个好用的输入法就可以看出来。要知道这些商业公司,对mac os开发了很多好用的日常软件,但没有linux的。更是说明了,商人都是围绕利益出发的,这是核心。就如三体里面的宇宙丛林法则。不管说的多么好,法则是不会变的。
     2、互联网的资料存在太多的噪音,这也是我不爱看电子书的原因,很多电子书都包含大量的错误,大脑里装了太多错误的知识,在你选择的时候,它们就发挥作用了。用女朋友的话说,就是烟囱口上招手,往黑道上引啊。
     3、对自己所用的平台并没有认真的分析。网上好多资料都是32位系统的,包括android sdk 并没有区分操作系统的架构体系。所以需要装补丁。在下载android sdk的时候其实说明页面是有提到64位ubuntu系统问题的。但可恶的是折叠了这部分东西。
     4、对编译器,操作系统理解的不够深刻。比如说上面提到的cocos2dx是如何判断平台的,大家都知道引擎可以自己判断,那到底如何判断的呢?其实对编译器熟悉的话,都知道不同的编译器会定义自己的符号,通过检测编译符号就知道是什么平台。
     5、并没有将自己的已知的知识很好的应用,其实对于相对路径,系统查找文件的方式,都很清楚,但遇到问题的时候还是怀疑这些,这就像化学反应中,要控制住不变量,才能得到实验结果。但是自己内心一乱,把这些正确的东西也改的不对了,增加了正确方向的可变因子。做人也一样,要确认自己的优势,以及能力。这样才能做到比较正确的抉择。可变因子变少了,意味着干扰因素少了。成功的概率就提高了。
三、参考资料

ubuntu下搭建cocos2dx编程环境-下的更多相关文章

  1. ubuntu下搭建cocos2dx编程环境-中

        上篇文章里讲了在ubuntu下部署cocos2d-x开发环境,这篇文章主要示范在ubuntu下部署cocos2d-x android开发环境.分开写就是因为我看很多文章里都将这两件事情混杂着写 ...

  2. ubuntu下搭建cocos2dx编程环境-上

        这大半年一直在开发flash游戏,用到的编程语言是actionscript和c++.所以这次公司决定开发手游端的话,C++不是很生疏,这是个好消息.坏消息是由于现在网页游戏还没有上线,所以公司 ...

  3. windows环境下搭建Cocos2d-X开发环境

    最近终于有时间可心搞搞自己的东西了,呵呵,那就开始做个手机小游戏给孩子玩吧. 首先必须选定开发的框架,移动终端开源的游戏框架貌似不多,找来找去也就这个了,名字简单Cocos2d-X,是Cocos2d国 ...

  4. ubuntu下搭建gtk+编程环境

    首先gtk+项目主页为: http://www.gtk.org/ gtk+现在有2和3两种版本,使用 sudo apt-get install gnome-core-devel 可以一次性安装2个版本 ...

  5. 在windows下搭建汇编编程环境

    汇编语言程序搭建masm+debug 下载链接 dosbox:链接:https://pan.baidu.com/s/1TgkfU-d5w6Nz9TOYro1pYw 密码:mp83 masm:链接:ht ...

  6. mac 下搭建php 编程环境全过程

    1,打开终端, 设置root密码sudo passwd root输入密码 2, 安装 apachemac 自带apache 启动apachectl start重新启动apachectl restart ...

  7. ubuntu 中 搭建 C编程环境

    在 ubuntu 中 使用 快捷键 Ctrl + Alt + T 打开 终端 在终端输入 gcc 查看 有没有安装 gcc (c语言的编译器) ( 我这里是 已经 安装 好的 ) 进行 安装 gcc ...

  8. Ubuntu 12.04下搭建Qt开发环境

    http://download.qt.io/official_releases/qt/ Ubuntu 环境下Gtk与Qt编译环境安装与配置(系统环境是Ubuntu 12.04) 1.配置基础开发环境G ...

  9. Ubuntu系统下搭建Python开发环境

    之前演示了在Windows中安装Pycharm,很简单.下面介绍一下如何在Ubuntu中安装Pycharm 1.更新Python至3.5.1,执行以下命令: sudo add-apt-reposito ...

随机推荐

  1. cocos2dx中导演的职责有哪些?

    1.一个游戏里面只有一个导演,因此采用了单例的设计模式,用getInstance方法来获得 2.游戏中导演负责openGL ES的初始化,场景的切换,游戏的暂停继续(相当于拍电影的ka),节点坐标与世 ...

  2. Android BLE API: GATT Notification not received

    When setting the value to the descriptor instead of putting descriptor.setValue(BluetoothGattDescrip ...

  3. “我爱淘”冲刺阶段Scrum站立会议4

    完成任务: 完成了搜索界面的Activity的编写. 计划任务: 实现数据库的链接,用户可以查到自己需要的书籍的信息. 遇到问题: 数据库的操作,实现查询功能:

  4. Windows 7系统下删除开机引导项的方法

    Windows 7系统下删除开机引导项的方法: 1.使用管理员权限运行cmd,在命令行窗口使用  bcdedit 回车 2.查找description为你想删除的段,看对应的标识符是多少, 然后使用 ...

  5. Html5 常见的新增API详解

    1. getElementsByClassName()方法 getElementsByClassName()方法接收一个参数,即一个包含一或多个类名的字符串,返回带有指定类的所有元素的NodeList ...

  6. storm集成kafka

    kafkautil: import java.util.Properties; import kafka.javaapi.producer.Producer; import kafka.produce ...

  7. Build Simple HTTP server

    1. The server just support POST&PUT method 2. It is a Python server, and save upload files in sp ...

  8. Eclipse新版 syso无法自动补全的解决方法

    症状: 以前输入Syso可以直接自动转化为System.out.println(""); 现如今居然还要让我手动选择一下才可以! 我仔细看了一下Eclipse的插件,发现是新版Ec ...

  9. 用CSS3制作的旋转六面体动画

    这是用CSS3制作的旋转的六面体 请用火狐或谷歌浏览器预览,有些旋转角度做的不够好,请大神指教 top bottom left right front back

  10. 说说php取余运算(%)的那点事

    http://www.phpddt.com/php/php-take-over.html       fmod()与 % 区别   都是取余 fmod是函数 原型float fmod(float x, ...