diff --git a/Runtime/GuruAnalytics/Plugins/Android/U3DAnalytics-1.10.4.aar b/Runtime/GuruAnalytics/Plugins/Android/U3DAnalytics-1.10.4.aar
deleted file mode 100644
index 3094d7b..0000000
Binary files a/Runtime/GuruAnalytics/Plugins/Android/U3DAnalytics-1.10.4.aar and /dev/null differ
diff --git a/Runtime/GuruAnalytics/Plugins/Android/U3DAnalytics-1.11.1.aar b/Runtime/GuruAnalytics/Plugins/Android/U3DAnalytics-1.11.1.aar
new file mode 100644
index 0000000..4886e8c
Binary files /dev/null and b/Runtime/GuruAnalytics/Plugins/Android/U3DAnalytics-1.11.1.aar differ
diff --git a/Runtime/GuruAnalytics/Plugins/Android/U3DAnalytics-1.10.4.aar.meta b/Runtime/GuruAnalytics/Plugins/Android/U3DAnalytics-1.11.1.aar.meta
similarity index 93%
rename from Runtime/GuruAnalytics/Plugins/Android/U3DAnalytics-1.10.4.aar.meta
rename to Runtime/GuruAnalytics/Plugins/Android/U3DAnalytics-1.11.1.aar.meta
index 9c2109e..dcbb5be 100644
--- a/Runtime/GuruAnalytics/Plugins/Android/U3DAnalytics-1.10.4.aar.meta
+++ b/Runtime/GuruAnalytics/Plugins/Android/U3DAnalytics-1.11.1.aar.meta
@@ -1,5 +1,5 @@
 fileFormatVersion: 2
-guid: 07cf2335bd298401b8015718fca55265
+guid: 32eda01e213614348899eefe856392d3
 PluginImporter:
   externalObjects: {}
   serializedVersion: 2
diff --git a/Runtime/GuruAnalytics/Plugins/Android/guru-analytics-1.0.3.aar b/Runtime/GuruAnalytics/Plugins/Android/guru-analytics-1.0.3.aar
deleted file mode 100644
index 8901499..0000000
Binary files a/Runtime/GuruAnalytics/Plugins/Android/guru-analytics-1.0.3.aar and /dev/null differ
diff --git a/Runtime/GuruAnalytics/Plugins/Android/guru-analytics-1.0.3.aar.meta b/Runtime/GuruAnalytics/Plugins/Android/guru-analytics-1.0.3.aar.meta
deleted file mode 100644
index 7e8e4af..0000000
--- a/Runtime/GuruAnalytics/Plugins/Android/guru-analytics-1.0.3.aar.meta
+++ /dev/null
@@ -1,3 +0,0 @@
-fileFormatVersion: 2
-guid: caf6ff09835a4a75bff1b4b068f664ef
-timeCreated: 1717117895
\ No newline at end of file
diff --git a/Runtime/GuruAnalytics/Plugins/Android/guru-analytics-1.1.1.aar b/Runtime/GuruAnalytics/Plugins/Android/guru-analytics-1.1.1.aar
new file mode 100644
index 0000000..4be633e
Binary files /dev/null and b/Runtime/GuruAnalytics/Plugins/Android/guru-analytics-1.1.1.aar differ
diff --git a/Runtime/GuruAnalytics/Plugins/Android/guru-analytics-1.1.1.aar.meta b/Runtime/GuruAnalytics/Plugins/Android/guru-analytics-1.1.1.aar.meta
new file mode 100644
index 0000000..3abec18
--- /dev/null
+++ b/Runtime/GuruAnalytics/Plugins/Android/guru-analytics-1.1.1.aar.meta
@@ -0,0 +1,32 @@
+fileFormatVersion: 2
+guid: 66c5f430ab9654ef4a2376e71aa04bca
+PluginImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  iconMap: {}
+  executionOrder: {}
+  defineConstraints: []
+  isPreloaded: 0
+  isOverridable: 0
+  isExplicitlyReferenced: 0
+  validateReferences: 1
+  platformData:
+  - first:
+      Android: Android
+    second:
+      enabled: 1
+      settings: {}
+  - first:
+      Any: 
+    second:
+      enabled: 0
+      settings: {}
+  - first:
+      Editor: Editor
+    second:
+      enabled: 0
+      settings:
+        DefaultValueInitialized: true
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Runtime/GuruAnalytics/README.md b/Runtime/GuruAnalytics/README.md
index 4a47be0..35d16e4 100644
--- a/Runtime/GuruAnalytics/README.md
+++ b/Runtime/GuruAnalytics/README.md
@@ -16,6 +16,14 @@ GuruAnalyticsLib 的 Unity 插件库
 
 ## Change Logs
 
+### 1.11.1
+- Android 端对齐 `1.1.1`
+  > Hash: 8791b946c441a081b80248aadbf65b515a8d2a10
+- iOS 端对齐 `0.3.6`
+  > Hash: 0cd5ce7aa64e12caa7413c938a3164687b973843
+- Pod 库改为 本地文件引用 (配合外部发行项目)
+
+
 ### 1.11.0
 - Android 端对齐 `1.0.3`
   > Hash: 1978686dbcba38b7b0421d8b6b2bef111356366b
diff --git a/Runtime/GuruAnalytics/Runtime/Script/Experiment.meta b/Runtime/GuruAnalytics/Runtime/Script/Experiment.meta
new file mode 100644
index 0000000..9b07101
--- /dev/null
+++ b/Runtime/GuruAnalytics/Runtime/Script/Experiment.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: f6d79ccb59bc4a5791121a696d6695b0
+timeCreated: 1721722422
\ No newline at end of file
diff --git a/Runtime/GuruAnalytics/Runtime/Script/Experiment/GuruAnalyticsExp.cs b/Runtime/GuruAnalytics/Runtime/Script/Experiment/GuruAnalyticsExp.cs
new file mode 100644
index 0000000..81174a2
--- /dev/null
+++ b/Runtime/GuruAnalytics/Runtime/Script/Experiment/GuruAnalyticsExp.cs
@@ -0,0 +1,83 @@
+
+
+namespace Guru
+{
+    using Guru;
+    using System;
+    using UnityEngine;
+    using Random = UnityEngine.Random;
+    using System.Collections.Generic;
+
+    public class GuruAnalyticsExp
+    {
+        
+        /**
+         * 原始数据
+        private const string JSON_GROUP_B =
+            "{\"cap\":\"firebase|facebook|guru\",\"init_delay_s\":10,\"experiment\":\"B\",\"guru_upload_ip_address\":[\"13.248.248.135\", \"3.33.195.44\"]}";
+
+        private const string JSON_GROUP_C =
+            "{\"cap\":\"firebase|facebook|guru\",\"init_delay_s\":10,\"experiment\":\"C\",\"guru_upload_ip_address\":[\"34.107.185.54\"],\"guru_event_url\":\"https://collect3.saas.castbox.fm\"}";
+        **/
+
+        /// 
+        /// 解析 JSON 字符串
+        /// 
+        /// 
+        /// 
+        public static GuruAnalyticsExpData Parse(string json)
+        {
+            if (string.IsNullOrEmpty(json)) return null;
+            return JsonParser.ToObject(json);
+        }
+
+        
+        public const string KEY_GURU_ANALYTICS_EXP = "guru_analytics_exp";
+        
+        /// 
+        /// 默认的本地配置
+        /// 
+        public static string DEFAULT_GURU_ANALYTICS_EXP = @"{
+	""enable"": true,
+	""exps"": [{
+		""groupId"": ""B"",
+		""baseUrl"": ""https://collect.saas.castbox.fm"",
+		""uploadIpAddress"": [""13.248.248.135"", ""3.33.195.44""]
+	}, {
+		""groupId"": ""C"",
+		""baseUrl"": ""https://collect3.saas.castbox.fm"",
+		""uploadIpAddress"": [""34.107.185.54""]
+	}]
+}";
+        
+        public static GuruAnalyticsExpData DefaultData => Parse(DEFAULT_GURU_ANALYTICS_EXP);
+
+    }
+    
+    /// 
+    /// 实验数据主题
+    /// 
+    public class GuruAnalyticsExpData
+    {
+        public bool enable = true; // 默认是打开的状态
+        public GuruAnalyticsExpConfig[] exps; // 实验列表
+        public string ToJson() => JsonParser.ToJson(this); // 转换成 JSON 字符串 
+        
+        public GuruAnalyticsExpConfig GetRandomConfig()
+        {
+            if (exps == null || exps.Length == 0) return null;
+            return exps[Random.Range(0, exps.Length)];
+        }
+    }
+    
+    /// 
+    /// 实验配置
+    /// 
+    public class GuruAnalyticsExpConfig
+    {
+        public string groupId;
+        public string baseUrl;
+        public List uploadIpAddress;
+    }
+    
+}
\ No newline at end of file
diff --git a/Runtime/GuruAnalytics/Runtime/Script/Experiment/GuruAnalyticsExp.cs.meta b/Runtime/GuruAnalytics/Runtime/Script/Experiment/GuruAnalyticsExp.cs.meta
new file mode 100644
index 0000000..971b1b9
--- /dev/null
+++ b/Runtime/GuruAnalytics/Runtime/Script/Experiment/GuruAnalyticsExp.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: a840d9218d324971b528c639ddfea270
+timeCreated: 1721722549
\ No newline at end of file
diff --git a/Runtime/GuruAnalytics/Runtime/Script/GuruAnalytics.cs b/Runtime/GuruAnalytics/Runtime/Script/GuruAnalytics.cs
index 3fab73f..fa325f9 100644
--- a/Runtime/GuruAnalytics/Runtime/Script/GuruAnalytics.cs
+++ b/Runtime/GuruAnalytics/Runtime/Script/GuruAnalytics.cs
@@ -14,10 +14,11 @@ namespace Guru
     public class GuruAnalytics
     {
         // Plugin Version
-        public const string Version = "1.11.0";
+        public const string Version = "1.11.1";
         
         public static readonly string Tag = "[ANU]";
         private static readonly string ActionName = "logger_error";
+        internal const int EventPriorityDefault = 10;
         
         private static IAnalyticsAgent _agent;
         
@@ -90,9 +91,54 @@ namespace Guru
             _autoSyncProperties = syncProperties;
             _enableErrorLog = enableErrorLog;
             Agent?.Init(appId, deviceInfo, isDebug);
+            
+        }
+
+
+        /// 
+        /// 根据配置初始化接口
+        /// 
+        /// 
+        /// 
+        /// 
+        /// 
+        /// 
+        /// 
+        /// 
+        public static void InitWithConfig(string appId, string deviceInfo, string baseUrl, List uploadIpAddress, bool isEnable = true, bool enableErrorLog = true, bool isDebug = false)
+        {
+            _enableErrorLog = enableErrorLog;
+#if UNITY_ANDROID
+            Debug.Log($"{Tag} [{Version}] --- InitWithConfig ---");
+            
+            if (isEnable)
+            {
+                if (Agent is AnalyticsAgentAndroid andAgent)
+                {
+                    if (!string.IsNullOrEmpty(baseUrl))
+                    {
+                        Debug.Log($"\t baseUrl:{baseUrl}");
+                    }
+                    if (uploadIpAddress != null)
+                    {
+                        Debug.Log($"\t uploadIpAddress:{uploadIpAddress}");
+                    }
+                    andAgent.InitWithConfig(appId, deviceInfo, baseUrl, uploadIpAddress, isDebug);
+                }
+            }
+            else
+            {
+                Init(appId, deviceInfo, isDebug);
+            }
+#else
+            Init(appId, deviceInfo, isDebug);
+#endif
             if(_enableErrorLog) InitCallbacks(); // 激活错误日志回调
         }
 
+        
+        
+
         /// 
         /// 设置视图名称
         /// 
@@ -200,7 +246,8 @@ namespace Guru
         /// 
         /// 事件名称
         /// INT类型的值
-        public static void LogEvent(string eventName, Dictionary data = null)
+        /// 
+        public static void LogEvent(string eventName, Dictionary data = null, int priority = -1)
         {
             if(_autoSyncProperties)
                 UpdateAllUserProperties(); // 每次打点更新用户属性
@@ -210,8 +257,9 @@ namespace Guru
             {
                 raw = BuildParamsJson(data);
             }
-            Debug.Log($"{Tag} event:{eventName} | raw: {raw}");
-            Agent?.LogEvent(eventName, raw);
+            if (priority < 0) priority = EventPriorityDefault;
+            Debug.Log($"{Tag} event:{eventName} | raw: {raw} | priority: {priority}");
+            Agent?.LogEvent(eventName, raw, priority);
         }
 
         private static string BuildParamsString(Dictionary data)
@@ -555,11 +603,13 @@ namespace Guru
                 case AnalyticsCode.ERROR_ZIP:
                 case AnalyticsCode.ERROR_DNS_CACHE:
                 case AnalyticsCode.CRONET_INTERCEPTOR:
+                case AnalyticsCode.EVENT_LOOKUP:
+                case AnalyticsCode.EVENT_SESSION_ACTIVE:    
                     canCatch = true;
                     break;
             }
 
-            if (code > 100 && code <= 200)
+            if (!canCatch && code is > 100 and <= 200)
             {
                 // 100 < code <= 200
                 canCatch = true;
@@ -605,21 +655,24 @@ namespace Guru
     {
         Unknown = -1,
         
-        DELETE_EXPIRED = 12,
-        UPLOAD_FAIL = 14,
-        Network_Lost = 22,
-        CRONET_INIT_FAIL = 26,
-        CRONET_INIT_EXCEPTION = 27,
+        DELETE_EXPIRED = 12,            // 删除过期事件
+        UPLOAD_FAIL = 14,               // 上报事件失败
+        Network_Lost = 22,              // 网络状态不可用
+        CRONET_INIT_FAIL = 26,          // 开启Cronet失败
+        CRONET_INIT_EXCEPTION = 27,     // 开启Cronet报错
         
-        ERROR_API = 101,
-        ERROR_RESPONSE = 102,
-        ERROR_CACHE_CONTROL = 103,
-        ERROR_DELETE_EXPIRED = 104,
-        ERROR_LOAD_MARK = 105,
-        ERROR_DNS = 106,
-        ERROR_ZIP = 107,
-        ERROR_DNS_CACHE = 108,
-        CRONET_INTERCEPTOR = 109,
+        ERROR_API = 101,                // 调用api出错
+        ERROR_RESPONSE = 102,           // api返回结果错误
+        ERROR_CACHE_CONTROL = 103,      // 设置cacheControl出错
+        ERROR_DELETE_EXPIRED = 104,     // 删除过期事件出错
+        ERROR_LOAD_MARK = 105,          // 从数据库取事件以及更改事件状态为正在上报出错
+        ERROR_DNS = 106,                // dns 错误
+        ERROR_ZIP = 107,                // zip 错误
+        ERROR_DNS_CACHE = 108,          // zip 错误
+        CRONET_INTERCEPTOR = 109,       // cronet拦截器
+        
+        EVENT_LOOKUP = 1003,
+        EVENT_SESSION_ACTIVE = 1004,
     }
 }
 
diff --git a/Runtime/GuruAnalytics/Runtime/Script/IAnalyticsAgent.cs b/Runtime/GuruAnalytics/Runtime/Script/IAnalyticsAgent.cs
index ac45d1c..1747553 100644
--- a/Runtime/GuruAnalytics/Runtime/Script/IAnalyticsAgent.cs
+++ b/Runtime/GuruAnalytics/Runtime/Script/IAnalyticsAgent.cs
@@ -15,7 +15,7 @@ namespace Guru
         void SetUid(string uid);
         bool IsDebug { get; }
         bool EnableErrorLog { get; set; }
-        void LogEvent(string eventName, string parameters);
+        void LogEvent(string eventName, string parameters, int priority = 0);
         void ReportEventSuccessRate(); // 上报任务成功率
         void SetTch02Value(double value); // 设置太极02数值
         void InitCallback(string objName, string method); // 设置回调对象参数
diff --git a/Runtime/GuruAnalytics/Runtime/Script/Impl/AnalyticsAgentAndroid.cs b/Runtime/GuruAnalytics/Runtime/Script/Impl/AnalyticsAgentAndroid.cs
index b4fa7a9..12d1cb2 100644
--- a/Runtime/GuruAnalytics/Runtime/Script/Impl/AnalyticsAgentAndroid.cs
+++ b/Runtime/GuruAnalytics/Runtime/Script/Impl/AnalyticsAgentAndroid.cs
@@ -4,6 +4,7 @@ namespace Guru
 {
     using System;
     using UnityEngine;
+    using System.Collections.Generic;
     
     public class AnalyticsAgentAndroid: IAnalyticsAgent
     {
@@ -16,8 +17,6 @@ namespace Guru
 
 #endif
         private static bool _isDebug = false;
-        public static bool UseWorker = true;
-        public static bool UseCronet = false;
         public static string BaseUrl = "";
             
         #region 工具方法
@@ -76,13 +75,65 @@ namespace Guru
 
         #region 接口实现
 
+        /// 
+        /// 默认的启动参数
+        /// 
+        /// 
+        /// 
+        /// 
         public void Init(string appId, string deviceInfo, bool isDebug = false)
         {
             _isDebug = isDebug;
             string bundleId = Application.identifier;
-            CallStatic("init", appId, deviceInfo, bundleId, UseWorker, isDebug, UseCronet, BaseUrl); // 调用接口   
+            bool useWorker = true;
+            bool useCronet = false;
+            string baseUrl = "";
+            List uploadIpAddress = null;
+            CallSDKInit(appId, deviceInfo, bundleId, baseUrl, uploadIpAddress , useWorker, useCronet, isDebug); // 调用接口   
         }
 
+        
+        /// 
+        /// 面向 Android 启动专用的 API
+        /// 
+        /// 
+        /// 
+        /// 
+        /// 
+        /// 
+        public void InitWithConfig(string appId, string deviceInfo, string baseUrl, List uploadIpAddress, bool isDebug = false)
+        {
+            _isDebug = isDebug;
+            string bundleId = Application.identifier;
+            bool useWorker = true;
+            bool useCronet = false;
+            CallSDKInit(appId, deviceInfo, bundleId, baseUrl, uploadIpAddress , useWorker, useCronet, _isDebug); // 调用接口   
+        }
+        
+        
+        /********* Android API **********
+           public static void init(String appId,
+                               String deviceInfo,
+                               String bundleId,
+                               boolean debug,
+                               boolean useWorker,
+                               boolean enabledCronet,
+                               String baseUrl,
+                               List uploadIpAddress)
+         */
+        private void CallSDKInit(string appId, 
+            string deviceInfo, 
+            string bundleId, 
+            string baseUrl = "", 
+            List uploadIpAddress = null, 
+            bool useWorker = true, 
+            bool useCronet = false, 
+            bool isDebug = false)
+        {
+            CallStatic("init", appId, deviceInfo, bundleId, isDebug, useWorker, useCronet, baseUrl, uploadIpAddress); // 调用接口  
+        }
+
+
         public void SetScreen(string screenName)
         {
             if (string.IsNullOrEmpty(screenName)) return;
@@ -124,7 +175,7 @@ namespace Guru
         }
 
         public bool IsDebug => CallStatic("isDebug");
-        public void LogEvent(string eventName, string parameters) => CallStatic("logEvent", eventName, parameters);
+        public void LogEvent(string eventName, string parameters, int priority = 0) => CallStatic("logEvent", eventName, parameters, priority);
         public void ReportEventSuccessRate() => CallStatic("reportEventRate");
         public void SetTch02Value(double value) => CallStatic("setTch02Value", value);
         public void InitCallback(string objName, string method) => CallStatic("initCallback", objName, method);
diff --git a/Runtime/GuruAnalytics/Runtime/Script/Impl/AnalyticsAgentIOS.cs b/Runtime/GuruAnalytics/Runtime/Script/Impl/AnalyticsAgentIOS.cs
index 7f410f3..9dd7130 100644
--- a/Runtime/GuruAnalytics/Runtime/Script/Impl/AnalyticsAgentIOS.cs
+++ b/Runtime/GuruAnalytics/Runtime/Script/Impl/AnalyticsAgentIOS.cs
@@ -122,7 +122,7 @@ namespace Guru
 
         public bool IsDebug => _isDebug;
 
-        public void LogEvent(string eventName, string data)
+        public void LogEvent(string eventName, string data, int priority = 0)
         {
 #if UNITY_IOS
             unityLogEvent(eventName, data);
diff --git a/Runtime/GuruAnalytics/Runtime/Script/Impl/AnalyticsAgentStub.cs b/Runtime/GuruAnalytics/Runtime/Script/Impl/AnalyticsAgentStub.cs
index 8be182e..d221d9b 100644
--- a/Runtime/GuruAnalytics/Runtime/Script/Impl/AnalyticsAgentStub.cs
+++ b/Runtime/GuruAnalytics/Runtime/Script/Impl/AnalyticsAgentStub.cs
@@ -87,7 +87,7 @@ namespace Guru
         public bool IsDebug => _isDebug;
         
 
-        public void LogEvent(string eventName, string parameters)
+        public void LogEvent(string eventName, string parameters, int priority = 0)
         {
             if (_isShowLog)
             {
diff --git a/Runtime/GuruCore/Runtime/Analytics/Analytics.Const.cs b/Runtime/GuruCore/Runtime/Analytics/Analytics.Const.cs
index 4c545d0..c301006 100644
--- a/Runtime/GuruCore/Runtime/Analytics/Analytics.Const.cs
+++ b/Runtime/GuruCore/Runtime/Analytics/Analytics.Const.cs
@@ -6,6 +6,7 @@ namespace Guru
 		fail,
 		timeout,
 		exit,
+		replay
 	}
 	
 	//打点常量定义
diff --git a/Runtime/GuruCore/Runtime/Analytics/Analytics.Custom.cs b/Runtime/GuruCore/Runtime/Analytics/Analytics.Custom.cs
index 74ea7b9..1e76f4a 100644
--- a/Runtime/GuruCore/Runtime/Analytics/Analytics.Custom.cs
+++ b/Runtime/GuruCore/Runtime/Analytics/Analytics.Custom.cs
@@ -33,41 +33,50 @@ namespace Guru
 	    /// 
 	    /// 初始化Guru自打点系统 (请优先于 Firebase 初始化调用)
 	    /// 
-	    public static void InstallGuruAnalytics(bool isDebug = false, bool enableErrorLog = false)
+	    public static void InstallGuruAnalytics(bool isDebug = false, bool enableErrorLog = false, string firebaseId = "")
+	    {
+		    InitGuruAnalyticService("", null, false, isDebug, enableErrorLog, firebaseId); // Android 初始化	
+	    }
+	    
+	    
+	    public static void InitGuruAnalyticService(string baseUrl, List uploadIpAddress, bool isEnable = true, bool isDebug = false,
+		    bool enableErrorLog = false, string firebaseId = "")
 	    {
-
 		    if (_hasInited) return;
 		    
-	        try
-	        {
+		    try
+		    {
 #if UNITY_EDITOR
-        		IsDebug = true;
+			    IsDebug = true;
 #else
 				IsDebug = isDebug;
 #endif
-		        string appId = IPMConfig.IPM_X_APP_ID;
-		        string deviceInfo = new DeviceInfoData().ToString();
-		        GuruAnalytics.Init(appId, deviceInfo, IsDebug, enableErrorLog); // 初始化(带Header) 
-		        
-		        _hasGotFirebaseId = false;
-		        _hasGotAdId = false;
-		        _hasGotAdjustId = false;
-		        _hasGotDeviceId = false;
-		        _hasGotUid = false;
-		        _lastReportRateDate = DateTime.Now;
-				_reportSuccessInterval = 120; // 2分钟上报一次
-	        
-		        UpdateAllValues();
+			    string appId = IPMConfig.IPM_X_APP_ID;
+			    string deviceInfo = new DeviceInfoData().ToString();
 
-		        _hasInited = true;
-	        }
-	        catch (Exception ex)
-	        {
-		        LogCrashlytics(ex);
-	        }
+			    _hasGotFirebaseId = false;
+			    _hasGotAdId = false;
+			    _hasGotAdjustId = false;
+			    _hasGotDeviceId = false;
+			    _hasGotUid = false;
+			    _lastReportRateDate = DateTime.Now;
+			    _reportSuccessInterval = 120; // 2分钟上报一次
+
+			    if(!string.IsNullOrEmpty(firebaseId)) GuruAnalytics.SetFirebaseId(firebaseId);
+			    
+			    GuruAnalytics.InitWithConfig(appId, deviceInfo, baseUrl, uploadIpAddress, isEnable, enableErrorLog); // Android 初始化	
+			    UpdateAllValues();
+
+			    _hasInited = true;
+		    }
+		    catch (Exception ex)
+		    {
+			    LogCrashlytics(ex);
+		    }
 	    }
 
-		#region 各ID上报信息
+
+	    #region 各ID上报信息
 
 		/// 
 		/// 设置用户ID
diff --git a/Runtime/GuruCore/Runtime/Analytics/Analytics.cs b/Runtime/GuruCore/Runtime/Analytics/Analytics.cs
index 9986dc8..eb7db7b 100644
--- a/Runtime/GuruCore/Runtime/Analytics/Analytics.cs
+++ b/Runtime/GuruCore/Runtime/Analytics/Analytics.cs
@@ -50,7 +50,7 @@ namespace Guru
 		
 		#region 初始化
 
-		public static void InitAnalytics()
+		public static void InitAnalytics(string baseUrl = "", List uploadIpAddress = null, bool isEnable = false, bool enableErrorLog = false, string firebaseId = "")
 		{
 			if (_isInited) return;
 			_isInited = true;
@@ -59,7 +59,7 @@ namespace Guru
 			CrashlyticsAgent.Install();
 			
 			// ------- 初始化自打点 ----------
-			InstallGuruAnalytics(IsDebug);
+			InitGuruAnalyticService(baseUrl, uploadIpAddress, isEnable, IsDebug, enableErrorLog, firebaseId);
 			
 			if (_defaultEventSetting == null)
 			{
diff --git a/Runtime/GuruCore/Runtime/Firebase/FirebaseUtil.cs b/Runtime/GuruCore/Runtime/Firebase/FirebaseUtil.cs
index 9ce380d..f2cf0be 100644
--- a/Runtime/GuruCore/Runtime/Firebase/FirebaseUtil.cs
+++ b/Runtime/GuruCore/Runtime/Firebase/FirebaseUtil.cs
@@ -1,11 +1,14 @@
-using System;
-using System.Collections.Generic;
-using Firebase;
-using Firebase.Analytics;
-using Firebase.Extensions;
-
 namespace Guru
 {
+	using System;
+	using System.Collections.Generic;
+	using Firebase;
+	using Firebase.Analytics;
+	using Firebase.Extensions;
+	using Firebase.RemoteConfig;
+	using Random = UnityEngine.Random;
+	using UnityEngine;
+	
 	public static partial class FirebaseUtil
 	{
 		private static readonly string LOG_TAG = "Firebase";
@@ -21,14 +24,15 @@ namespace Guru
 		public static Action OnUserAuthResult;
 		
 		
-		
+		/// 
+		/// 初始化 Firebase 组件
+		/// 
+		/// 
+		/// 
 		public static void InitFirebase(Action callback, bool isDebug = false)
 		{
 			_isReady = false;
 			_isDebug = isDebug;
-			Analytics.InitAnalytics(); // 打点提前初始化
-			
-			// Loom.StartUp(); // 确保主线程开启
 			
 			// 初始化 Fireabse 依赖
 			FirebaseApp.CheckAndFixDependenciesAsync().ContinueWithOnMainThread(task => {
@@ -46,11 +50,17 @@ namespace Guru
 				onInitComplete?.Invoke(_isReady);
 			});
 		}
+		
+		
+		/// 
+		/// 初始化 Firebase 组件
+		/// 
 		private static void InitializeFirebaseComp()
 		{
+			InitGuruAnalyticsExpDefaultRemoteValue(); // 提前注入云控参数默认值
 			InitCrashlytics();  // 老项目沿用此逻辑
 			InitRemoteConfig();	// 老项目沿用此逻辑
-			InitAdjustService();  // 初始化 Firebase 服务
+			InitAssetByFirebaseIdAsync(); // 获取到 FirebaseID 后异步执行逻辑
 			
 			if (IPMConfig.IPM_UID.IsNullOrEmpty())
 			{
@@ -93,6 +103,33 @@ namespace Guru
 			}
 		}
 
+
+		private static void InitAssetByFirebaseIdAsync()
+		{
+			// 异步获取 FirebaseID
+			FirebaseAnalytics.GetAnalyticsInstanceIdAsync()
+				.ContinueWithOnMainThread(task =>
+				{
+					string fid = task.Result;
+					if (task.IsCompleted && !string.IsNullOrEmpty(fid))
+					{
+						// 保存本地ID备份
+						IPMConfig.FIREBASE_ID = fid; // 保存FirebaseID
+						Debug.Log($"[SDk] --- Get FirebaseID: {fid}");
+						GuruAnalytics.SetFirebaseId(fid);
+					}
+					else
+					{
+						Debug.LogError($"[SDk] --- Fetch FirebaseID failed on start!");
+					}
+
+					//--- 结束后启动相关的服务 ---
+					InitAdjustService(); // 启动 AdjustService
+					InitAnalytics(); // 初始化打点逻辑和实现
+				});
+		}
+		
+
 		#region 启动 Adjust 服务
 		
 		/// 
@@ -100,33 +137,89 @@ namespace Guru
 		/// 
 		private static void InitAdjustService()
 		{
-			FirebaseAnalytics.GetAnalyticsInstanceIdAsync()
-				.ContinueWithOnMainThread(task =>
-				{
-					if (task.IsCompleted && !string.IsNullOrEmpty(task.Result)) 
-					{
-						// 保存本地ID备份
-						string fid = task.Result;
-						IPMConfig.FIREBASE_ID = fid; // 保存FirebaseID
-					}
-					else
-					{
-						UnityEngine.Debug.LogError($"Fetch FirebaseID failed on start!");
-					}
-					
-					// 启动 AdjustService
-					string appToken = GuruSettings.Instance.AdjustSetting?.GetAppToken() ?? "";
-					string fbAppId = GuruSettings.Instance.IPMSetting.FacebookAppId;
-					AdjustService.StartService(appToken, fbAppId);  
-				});
-			
-			
+			// 启动 AdjustService
+			string appToken = GuruSettings.Instance.AdjustSetting?.GetAppToken() ?? "";
+			string fbAppId = GuruSettings.Instance.IPMSetting.FacebookAppId;
+			AdjustService.StartService(appToken, fbAppId);
 		}
 		
-
 		#endregion
 
+		#region Android 自打点特殊启动方式
+
+		// Firebase 初始化才能调用此方法
+		private static void InitAnalytics()
+		{
+
+#if UNITY_ANDROID
+			// Android 平台开始
+			var fid = IPMConfig.FIREBASE_ID;// 获取 FirebaseID
+			var enableErrorLog = true; // 开启日志上报
+			
+			// 随机抽取本地分组获取数据
+			GetGuruAnalyticsExpConfig(out string groupId, out string baseUrl, out List uploadIpAddress, out bool isEnable);
+			
+			// 自打点启动前,先上报一下分数数据
+			GuruAnalytics.SetUserProperty(GuruAnalyticsExp.KEY_GURU_ANALYTICS_EXP, groupId); // 设置实验分组
+			
+			// 初始化打点和自打点
+			Analytics.InitAnalytics(baseUrl, uploadIpAddress, isEnable, enableErrorLog, fid); // 打点提前初始化
+#else
+
+			// iOS 不参与分组
+			GuruAnalytics.SetUserProperty(GuruAnalyticsExp.KEY_GURU_ANALYTICS_EXP, "none");
+			Analytics.InitAnalytics();
+#endif
+
+		}
+
+#if UNITY_ANDROID	
 		
+		// 添加默认的云控参数
+		private static void InitGuruAnalyticsExpDefaultRemoteValue()
+		{
+			AppendDefaultValue(GuruAnalyticsExp.KEY_GURU_ANALYTICS_EXP, GuruAnalyticsExp.DEFAULT_GURU_ANALYTICS_EXP);
+		}
+		
+		/// 
+		/// 在当前版本中,随机获取线上配置的值
+		/// 若无法获取线上配置,则默认是 B 分组
+		/// 
+		/// 
+		/// 
+		/// 
+		/// 
+		private static void GetGuruAnalyticsExpConfig(out string groupId, out string baseUrl, out List uploadIpAddress, out bool isEnable)
+		{
+			groupId = "";
+			baseUrl = "";
+			uploadIpAddress = null;
+			isEnable = true;
+			
+			// 如果云测关闭
+			var json = FirebaseRemoteConfig.DefaultInstance.GetValue(GuruAnalyticsExp.KEY_GURU_ANALYTICS_EXP).StringValue;
+			var expData = GuruAnalyticsExp.Parse(json);
+			var defaultExpData = GuruAnalyticsExp.DefaultData;
+			
+			GuruAnalyticsExpConfig config = null;
+			if (expData == null)
+			{
+				config = defaultExpData.exps[0]; // 默认是 B 组
+			}
+			else
+			{
+				config = expData.GetRandomConfig();
+				if (config == null) config = defaultExpData.exps[0]; // 默认是 B 组
+			}
+
+			baseUrl = config.baseUrl;
+			groupId = config.groupId;
+			uploadIpAddress = config.uploadIpAddress;
+			Debug.Log($"[SDK][ANU] --- Analytics EXP Group: {groupId}     baseUrl:{baseUrl}    uploadIpAddress:[{string.Join(",", uploadIpAddress)}]");
+		}
+
+#endif			
+		#endregion
 		
 	}
 }
\ No newline at end of file