概述
MSDK集成了Bugly的数据上报功能,能够将客户端crash时客户端的信息上传到服务器,供开发者查看。 能帮助开发者发现应用在线上的致命bug。
显示详情接入向导
MSDK 3.3.30 版本开始,Bugly 以插件化形式提供,业务可按需合入。如果不需要,可按照对应路径删除即可。
插件路径
- Deploy 面板新增 USE MSDKBugly 插件开关,如使用需勾选
- Unity 64位 的包,如果不使用 Bugly,则需要在脚本里自行添加删除 64位 Bugly so 的逻辑,或者到目录里将 64 位的 Bugly so 删掉(路径:MSDKForUnity/Assets/Plugins/Android/msdkLibrary/libs/对应的架构文件夹/libBugly_Native.so)
1 前置条件
1) 您已经按初始化模块说明完成 初始化
2) 请在MSDK->Config Settings 中的CLOSE_BUGLY_REPORT选项中去掉对勾。
3) 按照约定进行混淆
如果您不需要混淆jar包,请忽略这个环节。如果您需要混淆jar包,请不要混淆msdk*.jar文件,或者混淆msdk*.jar文件时请把下面<br>的keep信息添加到App的混淆配置中:
-keep class * extends android.app.Activity{*;}
-keep class * extends android.app.Service{*;}
#Bugly接口
-keep public class com.tencent.bugly.crashreport.crash.jni.NativeCrashHandler{public *; native <methods>;}
-keep public interface com.tencent.bugly.crashreport.crash.jni.NativeExceptionHandler{*;}
4) App 还原符号表配置
请到Bulgy平台设置还原符号表,网址为:http://bugly.qq.com/,可以参考bugly官网中符号表配置中的方式来进行配置。
完成了以上4步后,您就可以查看线上应用crash时的堆栈信息了。
2 使用crash上报功能
crash上报功能可以在应用crash时上报字符串,二进制信息到服务器供您分析。详见上报添加额外业务日志,上报添加额外二进制数据,上报输出日志。
查看上报数据
请使用协作者账号登录到bugly.qq.com的网站上,选择您要查看的应用,如下图所示,查看bugly上报的数据。如果您不知道协作者账号,请企业微信联系“MSDK助手”账号。
上报添加额外业务日志
1 概要说明
当程序Crash时,有时需要添加一些额外的自定义数据
2 注册回调
1)功能描述
当程序Crash时,有时需要添加一些额外的自定义数据,随crash日志一起上报到Bugly平台,这样可以更好的定位造成crash的原因。 如概述中3.1上传额外字符串所示,上报的数据可以在Bugly平台上可以在“自定义日志”->“额外数据”中找到。
2)接口声明
public delegate String CrashReportMessageDelegate();
3)参数说明
无
4)返回值
返回值类型 | 参数类型 | 说明 |
---|---|---|
无 | string | crash上报用户自定义字符串 |
5)示例代码
您需要在初始化时注册额外数据上报事件CrashReportMessageEvent,并输出上报日志。
MsdkEvent.Instance.CrashReportMessageEvent += () => {
//TODO 上报自定义字符串
return "Report extra message when crash happened. MSDK version : "
+ WGPlatform.Version;
};
6)特殊说明
在进行native上报时,该回调有可能失效。
7)名词解释
无
3 接口调用
无
上报添加额外二进制数据
1 概要说明
当程序Crash时,有时需要添加一些额外的二进制数据
2 注册回调
1)功能描述
当程序Crash时,有时需要添加一些额外的二进制数据,随crash日志一起上报到Bugly平台,这样可以更好的定位造成crash的原因。最终可以在bugly平台上查看错误详情,二进制数据目前可以在“跟踪数据>附件信息”下找到具体的crash事件,并下载二进制数据文件。
2)接口声明
public delegate byte[] CrashReportDataDelegate();
3)参数说明
无
4)返回值
返回值名称 | 参数类型 | 说明 |
---|---|---|
无 | byte[] | crash上报用户自定义二进制数组 |
5)示例代码
您需要在初始化时注册额外数据上报事件CrashReportDataEvent,并输出上报日志。
MsdkEvent.Instance.CrashReportDataEvent += () => {
//TODO 上报自定义二进制信息
string extraDataStr="Report extra data when crash happened. MSDK version : " + WGPlatform.Version;
byte[] extraData=System.Text.Encoding.Default.GetBytes(extraDataStr);
return extraData;
};
6)特殊说明
在native上报时,该回调有可能失效。
7)名词解释
无
3 接口调用
无
上报Lua/C#/JS脚本错误
1 概要说明
当游戏Lua/C#/JS脚本发生异常时,可以向bugly上报这些异常信息
2 注册回调
1)功能描述
上报脚本异常信息至bugly,可以在bugly上"错误分析" ->"Lua脚本错误/C#脚本错误/JS脚本错误"标签下查看这些上报
2)接口声明
void WGReportException(eExceptionType exception_type,
string exception_name,
string exception_msg,
string exception_stack,
Dictionary<string, string> ext_info);
3)参数说明
参数名称 | 类型 | 说明 |
---|---|---|
exception_type | eExceptionType枚举类型 | 异常上报类型 |
exception_name | String | 异常名字 |
exception_msg | String | 异常信息 |
exception_stack | String | 异常堆栈 |
ext_info | Dictionary |
事件内容,一个key-value形式的 Dictionary;key最大长度64,value最大长度1024,key个数最大50,key建议使用"B1","B2"规则命名,以减少流量消耗 |
4)返回值
无
5)示例代码
Dictionary<string, string> extInfo=new Dictionary<string, string>();
extInfo.Add("key1", "values1");
extInfo.Add("key2", "values2");
extInfo.Add("key3", "values3");
WGPlatform.Instance.WGReportException(eExceptionType.eException_CSharp,
“MSDK_exception_name",
“MSDK_exception_msg”,
“MSDK_exception_stack_test",
extInfo);
6)特殊说明
无
7)名词解释
无
上报输出日志
1 概要说明
上报输出日志
2 注册回调
无
3 接口调用
1)功能描述
在某些native crash的场景下,注册给bugly的OnCrashReportDataEvent 和CrashReportDataEvent事件回调函数可能无法得到执行,推荐您使用自定义日志的接口:用于记录一些开发者关心的调试日志,可以更全面地反应App异常时的前后文环境。使用方式与android.util.Log一致。用户传入TAG和日志内容。该日志将在Logcat输出,并在发生异常时上报,上报日志最大30K。
在bugly页面上可以在 "错误分析" -> "自定义错误" 查看上报的自定义日志。
2)接口声明
void WGBuglyLog(eBuglyLogLevel level, string log);
3)参数说明
参数名称 | 参数类型 | 说明 |
---|---|---|
level | enum | 详见结构体说明中eBuglyLogLevel部分 |
log | string | 要上传(打印)的内容 |
4)返回值及回调说明
无
5)示例代码
WGPlatform.Instance.WGBuglyLog(eBuglyLogLevel.eBuglyLogLevel_E, "bugly message test");
6)特殊说明
用户传入TAG和日志内容。该日志将在Logcat输出,并在发生异常时上报,上报日志最大30K。
7)名词解释
无
动态关闭bugly上报
1 概要说明
动态关闭bugly上报。调用时会关闭崩溃上报,其他bugly功能不影响;重新启动应用后再触发的崩溃会正常上报。
2 接口调用
1)功能描述
有些场景下,应用不需要崩溃上报,如:有些应用在杀进程时触发的上报不想上报到bugly;此时可以调用该接口关闭崩溃上报,其他bugly功能不影响;重新启动应用后再触发的崩溃会正常上报。
2)接口声明
void WGCloseCrashReport();
3)参数说明
无
4)示例代码
WGPlatform.Instance.WGCloseCrashReport();
6)特殊说明
调用该接口关闭崩溃上报后,其他bugly功能不影响;重新启动应用后再触发的崩溃会正常上报。
7)名词解释
无