| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503 | 
							- using UnityEngine;
 
- using System.Collections;
 
- #if !UNITY_STANDALONE_WIN
 
- using com.xsj.Crasheye.U3D;
 
- #endif
 
- using System;
 
- using System.Text;
 
- using System.Collections.Generic;
 
- using System.Runtime.InteropServices;
 
- using System.IO;
 
- using System.Runtime.CompilerServices;
 
- public class CrasheyeForAndroid : MonoBehaviour
 
- {
 
- #if UNITY_ANDROID && !UNITY_STANDALONE_WIN
 
-     /// <summary> 通过JNI调用Java添加自定义数据
 
-     /// </summary>
 
-     /// <param name="key"></param>
 
-     /// <param name="value"></param>
 
-     [DllImport("CrasheyeNDK")]
 
-     private static extern void SetCustomData(string key, string value);
 
-     /// <summary> 通过JNI调用
 
-     /// </summary>
 
-     /// <param name="key"></param>
 
-     /// <returns></returns>
 
-     [DllImport("CrasheyeNDK")]
 
-     private static extern string GetCustomData(string key);
 
-     /// <summary> 通过JNI移除自定义数据
 
-     /// </summary>
 
-     /// <param name="pKey"></param>
 
-     [DllImport("CrasheyeNDK")]
 
-     private static extern void RemoveCustomData(string pKey);
 
-     /// <summary> 通过JNI清除自定义数据
 
-     /// </summary>
 
-     [DllImport("CrasheyeNDK")]
 
-     private static extern void CleanCustomData();
 
-     /// <summary> 通过JNI调用Java添加打点信息
 
-     /// </summary>
 
-     /// <param name="breadcrumb"></param>
 
-     [DllImport("CrasheyeNDK")]
 
-     private static extern void LeaveBreadcrumbData(string breadcrumb);
 
-             
 
-     /// <summary>
 
-     /// 崩溃回溯C#堆栈信息
 
-     /// </summary>
 
-     private static bool CSharpStackTrace = false;
 
-     /// <summary>
 
-     /// 用于调用java函数
 
-     /// </summary>
 
-     private static AndroidJavaClass dumpcls;
 
-     /// <summary>
 
-     /// 设置AppVersion信息
 
-     /// </summary>
 
-     private static string YourAppVersion = "NA";
 
-     /// <summary>
 
-     /// 设置渠道号
 
-     /// </summary>
 
-     private static string YourChannelId = "NA";
 
-     /// <summary>
 
-     /// 设置是否只在wifi下往服务器发送数据
 
-     /// </summary>
 
-     private static bool FlushOnlyOverWiFi = false;
 
-     
 
-     /// <summary>
 
-     /// Android的初始化
 
-     /// </summary>
 
-     /// <param name="appKeyForAndroid"></param>
 
-     /// <param name="channIdForAndroid"></param>
 
-     public static void Init(string appKeyForAndroid, string channIdForAndroid)
 
-     {
 
-         if (string.IsNullOrEmpty(appKeyForAndroid))
 
-         {
 
-             return;
 
-         }
 
-         AndroidJavaClass cls = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
 
-         AndroidJavaObject javaObj = cls.GetStatic<AndroidJavaObject>("currentActivity");
 
-         EnableDebug();
 
-         dumpcls = new AndroidJavaClass("com.xsj.crasheye.Crasheye");
 
-         if (!YourAppVersion.Equals("NA"))
 
-         {
 
-             dumpcls.CallStatic("setAppVersion", new object[] { YourAppVersion });
 
-         }
 
-         if (FlushOnlyOverWiFi)
 
-         {   // 默认什为false
 
-             dumpcls.CallStatic("setFlushOnlyOverWiFi", new object[] { FlushOnlyOverWiFi });
 
-         }
 
-         dumpcls.CallStatic("setChannelID", new object[] { channIdForAndroid });
 
-         dumpcls.CallStatic("initWithNativeHandleUserspaceSig", new object[] { javaObj, appKeyForAndroid });
 
-         if (CSharpStackTrace)
 
-         {
 
-             Crasheye.crasheyeLib.InitCrasheyeLib();
 
-         }        
 
-         Crasheye.crasheyeLib.SetExceptionCallback();
 
-     }
 
-     /// <summary>
 
-     /// 如果启动了C#堆栈回溯可能会导致某些机型出现宕机
 
-     /// </summary>
 
-     public static void EnableCSharpStackTrace()
 
-     {
 
-         CSharpStackTrace = true;
 
-     }
 
-     /// <summary> 设置版本号信息
 
-     /// </summary>
 
-     /// <param name="yourAppVersion"></param>
 
-     public static void SetAppVersion(string yourAppVersion)
 
-     {
 
-         if (yourAppVersion == null)
 
-         {
 
-             return;
 
-         }
 
-         YourAppVersion = yourAppVersion;
 
-     }
 
-     /// <summary> 获取SDK版本信息
 
-     /// </summary>
 
-     /// <returns>返回sdk版本号</returns>
 
-     public static string GetAppVersion()
 
-     {
 
-         try
 
-         {
 
-             dumpcls = new AndroidJavaClass("com.xsj.crasheye.Crasheye");
 
-             if (dumpcls == null)
 
-             {
 
-                 return "NA";
 
-             }
 
-             string sdkVersion = dumpcls.CallStatic<string>("getSDKVersion", new object[] { });
 
-             if (string.IsNullOrEmpty(sdkVersion))
 
-             {
 
-                 return "NA";
 
-             }
 
-             return sdkVersion;
 
-         }
 
-         catch (Exception ex)
 
-         {
 
-             Debug.LogError(ex.Message);
 
-             return "NA";
 
-         }
 
-     }
 
-     /// <summary> 设置用户信息
 
-     /// </summary>
 
-     /// <param name="userIdentifier"></param>
 
-     public static void SetUserIdentifier(string userIdentifier)
 
-     {
 
-         if (String.IsNullOrEmpty(userIdentifier))
 
-         {
 
-             Debug.LogError("set user identifier is null or empty!");
 
-             return;
 
-         }
 
-         try
 
-         {
 
-             dumpcls = new AndroidJavaClass("com.xsj.crasheye.Crasheye");
 
-             if (dumpcls == null)
 
-             {
 
-                 return;
 
-             }
 
-             dumpcls.CallStatic("setUserIdentifier", new object[] { userIdentifier });
 
-         }
 
-         catch (Exception ex)
 
-         {
 
-             Debug.LogError(ex.Message);
 
-         }
 
-     }
 
-     /// <summary> SetURL
 
-     /// </summary>
 
-     /// <param name="SetURL"></param>
 
-     public static void SetURL(string url)
 
-     {
 
-         if (String.IsNullOrEmpty(url))
 
-         {
 
-             Debug.LogError("set url is null or empty!");
 
-             return;
 
-         }
 
-         try
 
-         {
 
-             dumpcls = new AndroidJavaClass("com.xsj.crasheye.Crasheye");
 
-             if (dumpcls == null)
 
-             {
 
-                 return;
 
-             }
 
-             dumpcls.CallStatic("setURL", new object[] { url });
 
-         }
 
-         catch (Exception ex)
 
-         {
 
-             Debug.LogError(ex.Message);
 
-         }
 
-     }
 
-     /// <summary> 指定获取应用程序log日志的行数
 
-     /// </summary>
 
-     /// <param name="lines">设置获取行号</param>
 
-     public static void SetLogging(int lines)
 
-     {
 
-         try
 
-         {
 
-             dumpcls = new AndroidJavaClass("com.xsj.crasheye.Crasheye");
 
-             if (dumpcls == null)
 
-             {
 
-                 return;
 
-             }
 
-             dumpcls.CallStatic("setLogging", new object[] { lines });
 
-         }
 
-         catch (Exception ex)
 
-         {
 
-             Debug.LogError(ex.Message);
 
-         }
 
-     }
 
-     /// <summary> 获取应用程序log日志关键字过滤
 
-     /// </summary>
 
-     /// <param name="filter">设置获取关键字</param>
 
-     public static void SetLogging(string filter)
 
-     {
 
-         if (string.IsNullOrEmpty(filter))
 
-         {
 
-             return;
 
-         }
 
-         try
 
-         {
 
-             dumpcls = new AndroidJavaClass("com.xsj.crasheye.Crasheye");
 
-             if (dumpcls == null)
 
-             {
 
-                 return;
 
-             }
 
-             dumpcls.CallStatic("setLogging", new object[] { filter });
 
-         }
 
-         catch (Exception ex)
 
-         {
 
-             Debug.LogError(ex.Message);
 
-         }
 
-     }
 
-     /// <summary> 获取应用程序log日志(过滤条件:关键字过滤+行数)
 
-     /// </summary>
 
-     /// <param name="lines">设置获取行数</param>
 
-     /// <param name="filter">设置获取关键字</param>
 
-     public static void SetLogging(int lines, string filter)
 
-     {
 
-         if (string.IsNullOrEmpty(filter))
 
-         {
 
-             return;
 
-         }
 
-         try
 
-         {
 
-             dumpcls = new AndroidJavaClass("com.xsj.crasheye.Crasheye");
 
-             if (dumpcls == null)
 
-             {
 
-                 return;
 
-             }
 
-             dumpcls.CallStatic("setLogging", new object[] { lines, filter });
 
-         }
 
-         catch (Exception ex)
 
-         {
 
-             Debug.LogError(ex.Message);
 
-         }
 
-     }
 
-     public static void SetIsBetaVersion(bool isBeta)
 
-     {
 
-        try
 
-         {
 
-             dumpcls = new AndroidJavaClass("com.xsj.crasheye.Crasheye");
 
-             if (dumpcls == null)
 
-             {
 
-                 return;
 
-             }
 
-             dumpcls.CallStatic("setIsBetaVersion", new object[] { isBeta });
 
-         }
 
-         catch (Exception ex)
 
-         {
 
-             Debug.LogError(ex.Message);
 
-         } 
 
-     }
 
-     /// <summary> 设置是否在Wifi下往服务器发送信息
 
-     /// </summary>
 
-     /// <param name="enabled"></param>
 
-     public static void SetFlushOnlyOverWiFi(bool enabled)
 
-     {
 
-         FlushOnlyOverWiFi = enabled;
 
-     }
 
-     /// <summary>
 
-     /// 打调试信息设置打开
 
-     /// </summary>
 
-     public static void EnableDebug()
 
-     {
 
-         try
 
-         {
 
-             dumpcls = new AndroidJavaClass("com.xsj.crasheye.Crasheye");
 
-             dumpcls.CallStatic("enableDebug", new object[]{});
 
-         }
 
-         catch (Exception ex)
 
-         {
 
-             Debug.LogError("call java set debug log err:" + ex.Message);
 
-         }
 
-     }
 
-     
 
-     /// <summary>
 
-     /// 添加自定义数据
 
-     /// </summary>
 
-     /// <param name="key">Key.</param>
 
-     /// <param name="value">Value.</param>
 
-     public static void AddExtraData(string key, string value)
 
-     {
 
-         if (string.IsNullOrEmpty(key) || string.IsNullOrEmpty(value))
 
-         {
 
-             return;
 
-         }
 
-         SetCustomData(key, value);
 
-         try
 
-         {
 
-             dumpcls = new AndroidJavaClass("com.xsj.crasheye.Crasheye");
 
-             if (dumpcls == null)
 
-             {
 
-                 return;
 
-             }
 
-             dumpcls.CallStatic("addExtraData", new object[] { key, value });
 
-         }
 
-         catch (Exception ex)
 
-         {
 
-             Debug.LogError(ex.Message);
 
-         }
 
-     }
 
-     /// <summary>
 
-     /// 获取自定义的值
 
-     /// </summary>
 
-     /// <param name="key"></param>
 
-     /// <returns></returns>
 
-     public static string GetExtraData(string key)
 
-     {
 
-         if (string.IsNullOrEmpty(key))
 
-         {
 
-             return "NA";
 
-         }
 
-         return GetCustomData(key);
 
-     }
 
-     /// <summary>
 
-     /// 移除自定义数据
 
-     /// </summary>
 
-     /// <param name="key"></param>
 
-     public static void RemoveExtraData(string key)
 
-     {
 
-         if (string.IsNullOrEmpty(key))
 
-         {
 
-             return;
 
-         }
 
-         RemoveCustomData(key);
 
-     }
 
-     /// <summary>
 
-     /// 清空所有自定数据
 
-     /// </summary>
 
-     public static void CleanExtraData()
 
-     {
 
-         CleanCustomData();
 
-     }
 
-     /// <summary>
 
-     /// 打点数据
 
-     /// </summary>
 
-     /// <param name="breadcrumb">Breadcrumb.</param>
 
-     public static void LeaveBreadcrumb(string breadcrumb)
 
-     {
 
-         if (string.IsNullOrEmpty(breadcrumb))
 
-         {
 
-             return;
 
-         }
 
-         LeaveBreadcrumbData(breadcrumb);
 
-         try
 
-         {
 
-             dumpcls = new AndroidJavaClass("com.xsj.crasheye.Crasheye");
 
-             if (dumpcls == null)
 
-             {
 
-                 return;
 
-             }
 
-             dumpcls.CallStatic("leaveBreadcrumb", new object[] { breadcrumb });
 
-         }
 
-         catch (Exception ex)
 
-         {
 
-             Debug.LogError(ex.Message);
 
-         }
 
-     }
 
-     public static void setInternalExtraData()
 
-     {
 
-         var internalExtraData = GetHardwareInfo();
 
-         if (String.IsNullOrEmpty(internalExtraData))
 
-         {
 
-             Debug.LogError("set internalExtraData is null or empty!");
 
-             return;
 
-         }
 
-         try
 
-         {
 
-             dumpcls = new AndroidJavaClass("com.xsj.crasheye.Crasheye");
 
-             if (dumpcls == null)
 
-             {
 
-                 return;
 
-             }
 
-             dumpcls.CallStatic("setInternalExtraData", new object[] { internalExtraData });
 
-         }
 
-         catch (Exception ex)
 
-         {
 
-             Debug.LogError(ex.Message);
 
-         }
 
-     }
 
-     private static string GetCpuInfo()
 
-     {
 
-         string cpuInfo = "NA";
 
-         TextReader file = null;
 
-         AndroidJavaClass androidOSBuild = new AndroidJavaClass("android.os.Build");
 
-         if (File.Exists("/proc/cpuinfo"))
 
-         {
 
-             file = File.OpenText("/proc/cpuinfo");
 
-         }
 
-         
 
-         if (file == null)
 
-         {
 
-             cpuInfo = androidOSBuild.GetStatic<string>("HARDWARE");
 
-             return cpuInfo;
 
-         }
 
-         try
 
-         {
 
-             string line;
 
-             while ((line = file.ReadLine()) != null)
 
-             {
 
-                 if (line.ToLower().IndexOf("hardware") != -1)
 
-                 {
 
-                     string[] partArr = line.Split(':');
 
-                     if (partArr.Length > 0)
 
-                     {
 
-                         cpuInfo = partArr[partArr.Length - 1].Trim();
 
-                         break;
 
-                     }
 
-                 }
 
-             }
 
-             if (cpuInfo == "NA")
 
-             {
 
-                 cpuInfo = androidOSBuild.GetStatic<string>("HARDWARE");
 
-             }
 
-         }
 
-         catch (Exception ex)
 
-         {
 
-             Debug.LogError(ex.Message);
 
-         }
 
-         return cpuInfo;
 
-     }
 
-     private static string GetHardwareInfo()
 
-     {
 
-         StringBuilder sb = new StringBuilder();
 
-         sb.Append(SystemInfo.graphicsDeviceName);
 
-         sb.Append("###" + GetCpuInfo());
 
-         return sb.ToString();
 
-     }
 
- #endif
 
- }
 
 
  |