ubuntu下搭建cocos2dx编程环境-下

     前两篇介绍了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、并没有将自己的已知的知识很好的应用,其实对于相对路径,系统查找文件的方式,都很清楚,但遇到问题的时候还是怀疑这些,这就像化学反应中,要控制住不变量,才能得到实验结果。但是自己内心一乱,把这些正确的东西也改的不对了,增加了正确方向的可变因子。做人也一样,要确认自己的优势,以及能力。这样才能做到比较正确的抉择。可变因子变少了,意味着干扰因素少了。成功的概率就提高了。
三、参考资料
原文地址:https://www.cnblogs.com/fengju/p/6174325.html