最近刚刚入职,主管让我学习下一些基础,之后就让我去学着对接腾讯出品的Bugly,一个异常崩溃上报SDK,这里总结了
- Bugly的后台使用
- Cocos 对接常见问题
- Bugly符号表配置参考
- 官网文档
https://bugly.qq.com/docs/ - Bugly后台使用指南
对应各个接口,一开始刚对接对于上报的信息在哪查看一脸懵逼,所以就总结了一下,希望对新手有所帮助- 异常上报查看:左边菜单_>错误分析
- setUserId(const char* userId)
设置用户唯一标识 -
- void setAppChannel(const char* channel)
设置App的渠道,初始化方法之前调用设置有效
但是安卓那里试了,可以在初始化之后设置 -
- setAppVersion(const char* version)
设置App的版本,初始化方法之前调用设置有效 -
- void reportException(int category, const char type, const char msg, const char* traceback)
上报自定义异常 -
- setTag(int tag)
设置自定义标签- 先配置标签
- 然后才能用这个标签
- 先配置标签
- void addUserValue(const char key, const char value)
设置用户自定义数据 -
- void removeUserValue(const char* key)
删除用户自定义数据- 同上
- void log(CrashReport::CRLogLevel level, const char* tag, const char * fmt, ...)
自定义日志打印接口 -
- Cocos 对接
- 参考:Bugly Cocos Plugin 使用指南
https://bugly.qq.com/docs/user-guide/instruction-manual-plugin-cocos/?v=20170912151050 - Cocos IOS
- Cocos 安卓
- Cocos Lua 对接
- lua绑定更多C++接口
- 先在BuglyLuaAgent.h声明
-
- 在BuglyLuaAgent.cpp封装对C++接口的调用
-
- 然后注册到Lua层
-
- 先在BuglyLuaAgent.h声明
- lua异常捕获缺失问题
- 有些函数:MainScene:ctor 没法在lua层捕获异常
- 解决办法
- 代码
- local function main(...)
- require("app.MyApp").new():run()
- end
- xpcall(main,__G__TRACKBACK__)
- xpcall 是lua捕获异常的函数,在Cocos2dx-lua的空白项目里有用这个
- 我试了一下在main.lua做了这样的修改,可以让MainScene:ctor函数出错可以通过__G__TRACKBACK__
- 关于xpcall参考
- 代码
- lua绑定更多C++接口
- 参考:Bugly Cocos Plugin 使用指南
- Bugly符号表配置
- 常见问题
- APPID
- IOS和安卓的都需要独立开来,各用各的
- 安卓
- ADT的问题
- 报错:[ExtraCrashManager] crash manager has not been init```
- 这是mumu模拟器的问题,卸载了应用重新安装应该就可以了
- 没法初始化
- 需要
- 需要
- 报错:[ExtraCrashManager] crash manager has not been init```
- ADT的问题
- IOS
- 设置渠道号需要在Bugly初始化之前,但是安卓的却不用,这个还没有解决办法
- 开启自定义日志上报
- void initCrashReport(const char* appId, bool debug, CrashReport::CRLogLevel level)
设置第三个参数,日志的等级,默认为-1 不上报 - Cocos lua示例
- 代码
- C++代码
- // 初始化Bugly的sdk
- CrashReport::initCrashReport("e62439f557", true,CrashReport::CRLogLevel::Verbose);
- Lua代码
- local log = "abcsd"
- --int, level - which value is 0=Verbose, 1=Debug, 2=Info, 3=Warn, 4=Error
- BugHelper.SetLog(4,"00",log)
- C++代码
- 代码
- void initCrashReport(const char* appId, bool debug, CrashReport::CRLogLevel level)
- APPID