You've already forked CC-Framework.CrashReport
91 lines
3.2 KiB
C#
91 lines
3.2 KiB
C#
using System;
|
||
using System.IO;
|
||
using UnityEngine;
|
||
|
||
namespace Runtime
|
||
{
|
||
[CreateAssetMenu (menuName = "CrashConfig")]
|
||
public class CrashConfig : ScriptableObject
|
||
{
|
||
private const string BuglyGUID = "BuglyGUID";
|
||
|
||
[SerializeField] private string BuglyAppID;
|
||
[SerializeField] private string BuglyChannel;
|
||
[SerializeField] private bool HasDebugMode;
|
||
[SerializeField] private bool EnableCrashReport;
|
||
public event Action<string, string, LogType> LogCallbackEvent;
|
||
public bool HasInit => this._hasInit;
|
||
|
||
private bool _hasInit;
|
||
private static CrashConfig _instance;
|
||
|
||
private static CrashConfig Instance
|
||
{
|
||
get
|
||
{
|
||
if (_instance == null)
|
||
{
|
||
_instance = Resources.Load<CrashConfig> (nameof(CrashConfig));
|
||
}
|
||
#if UNITY_EDITOR
|
||
if (_instance == null)
|
||
{
|
||
_instance = CreateInstance<CrashConfig> ();
|
||
// 自定义资源保存路径
|
||
string path = "Assets/Resources";
|
||
//如果项目总不包含该路径,创建一个
|
||
if (!Directory.Exists (path))
|
||
{
|
||
Directory.CreateDirectory (path);
|
||
}
|
||
UnityEditor.AssetDatabase.CreateAsset (_instance, path + $"/{nameof(CrashConfig)}.asset");
|
||
UnityEditor.AssetDatabase.Refresh ();
|
||
}
|
||
#endif
|
||
return _instance;
|
||
}
|
||
}
|
||
|
||
[RuntimeInitializeOnLoadMethod (RuntimeInitializeLoadType.AfterSceneLoad)]
|
||
private static void OnEnableCrashReport ()
|
||
{
|
||
if (Instance != null && Instance.EnableCrashReport)
|
||
{
|
||
Instance.InitCrash ();
|
||
}
|
||
}
|
||
|
||
private void InitCrash ()
|
||
{
|
||
if (this._hasInit)
|
||
{
|
||
return;
|
||
}
|
||
|
||
this._hasInit = true;
|
||
var buglyGuid = PlayerPrefs.HasKey (BuglyGUID) ? PlayerPrefs.GetString (BuglyGUID) : Guid.NewGuid ().ToString ();
|
||
PlayerPrefs.SetString (BuglyGUID, buglyGuid);
|
||
|
||
// 开启SDK的日志打印,发布版本请务必关闭
|
||
if (this.HasDebugMode)
|
||
{
|
||
BuglyAgent.ConfigDebugMode (true);
|
||
}
|
||
|
||
// 注册日志回调,替换使用 'Application.RegisterLogCallback(Application.LogCallback)'注册日志回调的方式
|
||
BuglyAgent.RegisterLogCallback (OnLogCallBack);
|
||
|
||
BuglyAgent.ConfigDefault (this.BuglyChannel, Application.version , buglyGuid , 0);
|
||
|
||
BuglyAgent.InitWithAppId (this.BuglyAppID);
|
||
|
||
// 如果你确认已在对应的iOS工程或Android工程中初始化SDK,那么在脚本中只需启动C#异常捕获上报功能即可
|
||
BuglyAgent.EnableExceptionHandler ();
|
||
}
|
||
|
||
private void OnLogCallBack (string condition, string stacktrace, LogType type)
|
||
{
|
||
this.LogCallbackEvent?.Invoke (condition, stacktrace, type);
|
||
}
|
||
}
|
||
} |