Unreal接入指引
本文是介绍Unreal SDK的详细文档,包含了基本的接入流程,和高级的接口使用介绍。
如果想快速接入,验证平台和SDK功能,建议查看项目菜单中的“接入指南 ”。引导中已经按项目具体的信息(平台,引擎,国内/海外,AppID)生成了针对此项目的初始化代码,可以直接复制使用。如下图所示:
项目创建:公司外部项目支持自助创建项目,但有免费试用时长。公司内部项目,企业微信联系“CrashSight小助手”开通。
本文档适用于CrashSight SDK 4.3.x版本。4.2.x版本接入请参考旧版本Unreal SDK开发接入
1 Unreal引擎接入方案
1.1 导入 CrashSight UE Plugin
-
- 在平台成功创建项目后,在侧边栏的“接入指南”中,可以下载到与项目平台和引擎相匹配的SDK。如下图所示:
-
- 将位于同一目录中的 Plugins 文件解压,将 Plugins 文件夹中的CrashSight目录拷贝到UE项目根目录下的Plugins目录(如果没有则创建该文件夹)。点击[文件]刷新 [Visual Studio 项目],然后在 Visual Studio 项目中则可以看到CrashSight plugin 代码以及目录结构,如图所示。
-
- 将CrashSight插件源码和项目源码一起编译,编译完成后则可以在UE编辑器中的编辑插件中看到CrashSight插件,如图所示。
1.2 将CrashSight加入依赖项
在项目主模块的Build.cs中添加:
PrivateDependencyModuleNames.AddRange(new string[] { "CrashSight" });
1.3 执行初始化
- 方法说明 选择第一个场景,或者主场景(scene), 在尽可能较早加载的脚本中调用如下代码进行初始化:
#include "CrashSightAgent.h" //请包含该头文件
using namespace GCloud::CrashSight;
#if DEBUG
CrashSightAgent::ConfigDebugMode (true);
#endif
// 设置上报域名,请根据项目发行需求进行填写。(必填)
CrashSightAgent::ConfigCrashServerUrl("UploadUrl");
// 设置上报所指向的APP ID, 并进行初始化。APP ID可以在管理端更多->产品设置->产品信息中找到。(必填)
CrashSightAgent::InitWithAppId("AppID");
- 上报域名
国内公有云:
- Android: https://android.crashsight.qq.com/pb/async
- iOS: https://ios.crashsight.qq.com/pb/sync
- Harmony: harmony.crashsight.qq.com
- Windows: pc.crashsight.qq.com
- Mac: https://mac.crashsight.qq.com/pb/sync
海外公有云:
- Android: https://android.crashsight.wetest.net/pb/async
- iOS: https://ios.crashsight.wetest.net/pb/sync
- Windows: pc.crashsight.wetest.net
- Mac: https://mac.crashsight.wetest.net/pb/sync
1.3.1 Windows配置
Windows平台还需添加崩溃捕获配置。崩溃捕获配置有2种方案,对于可以修改引擎的项目,强烈推荐使用1.3.2.1中的方案,崩溃上报更准确。对于其他使用官方引擎版本的用户,使用1.3.2.2中的配置。
1.3.1.1 接入方案1
- 在引擎源码 \Engine\Source\Runtime\Core\Public\Windows目录下,复制入CrashSightReporter.h
- 在引擎源码 \Engine\Source\Runtime\Core\Private\Windows\WindowsPlatformCrashContext.cpp 中引入CrashSightReporter.h,在函数ReportCrash(某些宏配置下为DefaultReportCrash)函数第一行,调用FCrashSightReporter::ReportCrashToCrashSight(ExceptionInfo);
- 编译引擎
- 在初始化函数CrashSight::CrashSightAgent::InitWithAppId后调用 CrashSight::CrashSightAgent::SetVehEnable(false);
1.3.1.2 接入方案2
- 在初始化函数CrashSight::CrashSightAgent::InitWithAppId后调用 CrashSight::CrashSightAgent::SetVehEnable(true);
- 在CrashSight::CrashSightAgent::SetVehEnable(true);后调用 CrashSight::CrashSightAgent::UnrealCriticalErrorEnable(true);
1.3.2 Mac配置
在接入Mac端时,如果系统提示"CrashSight.dylib"无法打开,请执行以下命令来确保CrashSight.dylib通过MacOS的安全校验:
sudo xattr -r -d com.apple.quarantine path/to/CrashSight.dylib
1.4 Crash Reporter Client接入
Crash Reporter Client是Unreal Engine自带的崩溃上报机制,能够独立捕获并上报崩溃信息。 要通过Crash Reporter Client上报崩溃,请找到项目Config目录中的DefaultEngine.ini,在其中添加:
[CrashReportClient]
CrashReportClientVersion=1.0
DataRouterUrl="https://pc.crashsight.qq.com/csApi/ueCrc/exception/{APPID}/{VERSION}"
如果已有[CrashReportClient]块,则只需修改内容。 然后,进入项目设 置->打包->高级,勾选包括崩溃报告器。 Crash Reporter Client的崩溃上报机制完全不依赖CrashSight SDK,可以单独接入,并能提供一些Unreal引擎独有的字段信息。但是需要注意的是,Crash Reporter Client仅上报崩溃,不包含错误上报等重要功能。此外,Crash Reporter Client只能设置一个DataRouterUrl,这导致CrashSight和其它崩溃上报工具不能同时使用Crash Reporter Client。
3 接口说明
全平台接口是指所有平台都通用的接口,覆盖了CrashSight的大部分基础功能,如:初始化、错误上报等。此外,每个平台可能会有一些独有的接口,会在后文单独列出。一个平台上可以使用的全部接口为:全平台接口+该平台独有的接口。
3.1 全平台接口
3.1.1 初始化
static void InitWithAppId(const char* app_id);