概述
MSDK集成了Bugly的数据上报功能,能够将客户端crash时客户端的信息上传到服务器,供开发者查看。 能帮助开发者发现应用在线上的致命bug。
显示详情接入向导
MSDK 3.3.30 版本开始,Bugly 以插件化形式提供,业务可按需合入。如果不需要,可按照对应路径删除即可。
插件路径
- MSDKLibrary/libs/MSDKBugly.jar
- MSDKLibrary/libs/arm64-v8a(armeabi、armeabi-v7a、x86、x86_64)/libBugly_Native.so
1 前置条件
1) 您已经按初始化模块说明完成 初始化
2) 打开和关闭bugly上报的开关需要在/assets/msdkconfig.ini中设置。
;关闭bugly上报开关,默认应将其设为false,设为true即关闭了crash上报功能
CLOSE_BUGLY_REPORT=false
3) 按照约定进行混淆
如果您不需要混淆jar包,请忽略这个环节。如果您需要混淆jar包,请不要混淆msdk*.jar文件,或者混淆msdk*.jar文件时请把下面
的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)接口声明
void WGSetObserver(WGPlatformObserver *pObserver)
3)参数说明
参数名称 | 类型 | 说明 |
---|---|---|
observer | WGPlatformObserver 类 | MSDK回调类,参考示例代码 |
4)返回值
无
5)示例代码
class GlobalCallback : public WGPlatformObserver
{
public:
virtual std::string OnCrashExtMessageNotify()
{
// 此处游戏补充crash时上报的额外信息
std::string str="new jni update extra jni crash log now!";
LOGD("OnCrashExtMessageNotify %s", str.c_str());
return str;
}
// TODO 异账号逻辑先注释
/*virtual bool OnDiffAccountAlert()
{
return false;
}*/
virtual ~GlobalCallback()
{
}
};
6)特殊说明
在进行native上报时,该回调有可能失效。
7)名词解释
无
3 接口调用
无
上报添加额外二进制数据
1 概要说明
当程序Crash时,有时需要添加一些额外的二进制数据
2 注册回调
1)功能描述
当程序Crash时,有时需要添加一些额外的二进制数据,随crash日志一起上报到Bugly平台,这样可以更好的定位造成crash的原因。最终可以在bugly平台上查看错误详情,二进制数据目前可以在“跟踪数据>附件信息”下找到具体的crash事件,并下载二进制数据文件。
2)接口声明
void WGSetObserver(WGPlatformObserver *pObserver)
3)参数说明
参数名称 | 类型 | 说明 |
---|---|---|
observer | WGPlatformObserver 类 | MSDK回调类,参考示例代码 |
4)返回值
无
5)示例代码
class GlobalCallback : public WGPlatformObserver
{
public:
virtual std::vector<char> OnCrashExtDataNotify()
{
// 此处游戏补充crash时上报的额外信息
LOGD("OnCrashExtDataNotify %s", "extra binary data");
//最大值为30k
char *uploadData=new char[30 * 1024];
//在此处添加要上报的二进制数据
memset(uploadData, 6, sizeof(char) * 30 * 1024);
std::vector<char> extData(uploadData, uploadData + (30 * 1024));
delete[] uploadData;
uploadData=NULL;
return extData;
}
virtual ~GlobalCallback()
{
}
};
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,
unsigned char *exception_name,
unsigned char *exception_msg,
unsigned char *exception_stack,
std::vector<KVPair> &ext_info)
3)参数说明
参数名称 | 类型 | 说明 |
---|---|---|
exception_type | eExceptionType枚举类型 | 异常上报类型 |
exception_name | unsigned char * | 异常名字 |
exception_msg | unsigned char * | 异常信息 |
exception_stack | unsigned char * | 异常堆栈 |
ext_info | vector |
事件内容,一个key-value形式的vector;key最大长度64,value最大长度1024,key个数最大50,key建议使用"B1","B2"规则命名,以减少流量消耗 |
4)返回值
无
5)示例代码
std::vector<KVPair>extInfo;
KVPair item;
item.key="extInfo_Body";
item.value=std::string("wegame_extInfo_body");
eveList.push_back(item);
WGPlatform::GetInstance()->WGReportException((eExceptionType) exceptionType,
"MSDK_excetipon_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, unsigned char *log);
3)参数说明
参数名称 | 参数类型 | 说明 |
---|---|---|
level | enum | 详见结构体说明中eBuglyLogLevel部分 |
log | unsigned char * | 要上传(打印)的内容 |
4)返回值
无
5)示例代码
WGPlatform::GetInstance()->WGBuglyLog((eBuglyLogLevel)cLevel,
(unsigned char *)"bugly message test");
6)特殊说明
用户传入TAG和日志内容。该日志将在Logcat输出,并在发生异常时上报,上报日志最大30K。
7)名称解释
无
动态关闭bugly上报
1 概要说明
动态关闭bugly上报。调用时会关闭崩溃上报,其他bugly功能不影响;重新启动应用后再触发的崩溃会正常上报。
2 接口调用
1)功能描述
有些场景下,应用不需要崩溃上报,如:有些应用在杀进程时触发的上报不想上报到bugly;此时可以调用该接口关闭崩溃上报,其他bugly功能不影响;重新启动应用后再触发的崩溃会正常上报。
2)接口声明
void WGCloseCrashReport();
3)参数说明
无
4)示例代码
WGPlatform::GetInstance()->WGCloseCrashReport();
6)特殊说明
调用该接口关闭崩溃上报后,其他bugly功能不影响;重新启动应用后再触发的崩溃会正常上报。
7)名词解释
无