BUG表现为,cocos2dx的工程下,在能输入文字的地方,点击iOS键盘上的"话筒"按钮,进行听写,此时APP直接崩溃

 

解决方法:

在CCDirectorCaller.mm文件里修改 doCaller方法

 

添加头文件

 

 

再次实验后问题消失

环境:cocos2dx 2.1rc0-x-2.1.4
ios7.0.6

https://github.com/boyu0/cocos2d-x/commit/c3778d8123537f0e991e98c2d89d3e577e3120f1

一. 源文件

  1. 文件采用UTF-8编码
  2. 文件后缀为小写的"lua" 

二. 命名

  1. 类(class)文件名使用大驼峰式
  2. 普通文件名,变量名,函数名使用小驼峰式
  3. 变量名尽量绕开系统保留字
  4. 全局变量使用全大写,以"_"分割单词
  5. 命名尽量用有意义的英文
  6. 如果单词过长,可使用缩写
  7. 英文单词过于复杂时,才能使用拼音 

三. 排版

  1. 使用't'(tab)进行代码缩进
  2. 比较符(=,==,>,>=,<,<=),连接符(..),运算符(+,-,*,/,%,^)左右需要有空格
  3. 逗号前不需要空格,逗号后需要有空格
  4. 括号不需要空格
  5. 函数之间用空行隔开
  6. 代码块含义不同时,用空行隔开
  7. 不允许一次使用多个空行
  8. if,for,while等语句独立成行
  9. 一次只声明一个变量 

四. 注释

  1. 单行注释用"–"
  2. 多行注释用"–[[ –]]"
  3. 注释区域
     版本,版权说明
    类说明,文件说明
    函数接口说明
    变量,全局变量
    重要代码块
  4. 注释上方需要空行,下方不需要

五. 其他

  1. 判空初始化
  2. 三元运算

在做quick-x的应用程序时,自建了一个Resources的文件夹,然后加入到Xcode中

真机调试时报错"Could not inspect the application package"

由于添加之前跑过一次没问题,所以怀疑是文件夹名字"Resources"的问题

于是把"Resources"重命名成"AppRes",并重新添加,然后Product->Clean重新运行

没想到还是报这个错,google之,发现这样并不能深度Clean

需要按住Mac上Option,这样Product->Clean会变成Product->Clean Build Folder

再次运行后,问题消失

 

quick-cocos2d-x 2.2.1

xcode 5.0.2

os x 10.9.1

 

工程上线后,总会有几个崩溃,有的是操作问题,有的是程序bug,下面就是如何通过崩溃日志找到程序bug的过程

  1. 先弄到设备上APP的crash日志
    参照(这篇日志),我的日志是从报错平台上得到的,这步跳过
  2. 打开报错日志(这里只保留了有用信息,不过你拿得到报错机器的话…直接看8.)
  3. 分析
    gcld开头的应该就是引起崩溃的地方,不过完全看不懂
    a) 创建一个crash文件夹
    b) 把报错日志重命名成app.crash 放进crash文件夹
    c) 问开发要xcarchive,从xcarchive里找到app.app和app.app.dSYM 放进crash文件夹
    d) 复制/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKitBase.framework/Versions/A/Resources/symbolicatecrash 放进crash文件夹
    e) 打开Terminal

    f) 我们看到了"got symbolicator for /Users/superyyl/Desktop/crash/app.app/app, base address 4000"这种日志
  4. 打开gcld-kuaiyong-symbol.crash文件
    发现Thread 0的地方已经变样子了

  5. 找到C代码​
    打开LuaCocos2d.cpp,找到21969行,看到C代码

  6. 根据日志判断崩溃原因
    错误类型是SIGSEGV,从signal.h文件中得知
    ​​

  7. 分析用户的行为日志
    such as:最近收发的数据包,最近调用的接口,进入的场景名
    来跟踪lua代码可能出错的地方

  8. 既然拿得到设备…
    a) 找开发要到当时版本的xcarchive,导入到xcode中
    b) 连接设备
    c) 从xcode里的Organizer-Devices里找到Device Logs
    d) 找到崩溃的日志,左键单击
    e) 开始的2秒,崩溃日志还是内存地址,但是2秒解析过后,就能找到具体行了

  9. 最后
    这个方法能找到大部分的报错原因,但有时候拿到crash并非完全有效,比如你可能拿到大量例子中的"___lldb_unnamed_function6269"就无从下手

附录1:

Apple Hardware Model

附录2: 

signal.h defines

编辑器

Sublime Text 3
令人爱不释手的编辑器,强大的插件系统,可以令其变身成IDE
Cocos Code IDE
触控官方的IDE,1.x基于Eclipse的LDT插件修改,比较笨重,经常菊花,2.x基于IDEA修改,然而已经弃坑
好处是可以Debug

资源管理

TexturePacker
节省图片占用大小,优化内存占用,减少渲染次数

GlyphDesigner (Mac Only)
无需庞大的PS,轻松做出漂亮的美术字

TiledMap
强大的瓦片地图编辑器,支持平面和斜45度角的瓦片地图

场景编辑器

CocosBuilder (Mac Only开源)
cocos2d-iphone时代的场景编辑器,比较顺手好用

Cocos Studio
触控旗下的场景编辑器,功能强大,与版本结合紧密

文档工具

Dash
文档查看工具,这个工具是越来越强大,目前支持查看不同版本的文档