diff --git a/Editor/GuruBuildSuit/AndroidMessagingActivityFixer/FirebaseMessagingActivityFixer.cs b/Editor/GuruBuildSuit/AndroidMessagingActivityFixer/FirebaseMessagingActivityFixer.cs new file mode 100644 index 0000000..648cb50 --- /dev/null +++ b/Editor/GuruBuildSuit/AndroidMessagingActivityFixer/FirebaseMessagingActivityFixer.cs @@ -0,0 +1,70 @@ +#if UNITY_ANDROID +namespace Guru.BuildTool +{ + using System.IO; + using UnityEngine; + using UnityEditor.Build; + using UnityEditor.Build.Reporting; + + /// + /// MessagingUnityPlayerActivity.java 修改器 + /// 用于在构建的时候将 super.onCreate(savedInstanceState); 替换为 super.onCreate(null); + /// 可在 PlayerSettings 内指定 NO_FIRBASE_ACTIVITY_FIX 来进行屏蔽 + /// + public class FirebaseMessagingActivityFixer: IPreprocessBuildWithReport + { + /// + /// 执行顺序 + /// + public int callbackOrder => 10; + + private const string SOURCE_PATH = "Plugins/Android"; + private const string TARGET_NAME = "MessagingUnityPlayerActivity.java"; + private const string CONTENT_NEED_TO_FIX = "super.onCreate(savedInstanceState);"; + private const string CONTENT_FIXED = "super.onCreate(null);"; + + + public void OnPreprocessBuild(BuildReport report) + { +#if NO_FIRBASE_ACTIVITY_FIX + return; +#endif + var targetPath = GetTargetPath(); + if (!File.Exists(targetPath)) + { + Debug.LogWarning($"[POST] --- Target file not exist: {targetPath}"); + return; + } + + var conents = File.ReadAllText(targetPath); + + if (string.IsNullOrEmpty(conents)) + { + Debug.LogWarning($"[POST] --- Target is empty: {targetPath}"); + return; + } + + if (!conents.Contains(CONTENT_NEED_TO_FIX)) + { + Debug.LogWarning($"[POST] --- Target is no need to fix: {targetPath}"); + return; + } + + var newContents = conents.Replace(CONTENT_NEED_TO_FIX, CONTENT_FIXED); + File.WriteAllText(targetPath, newContents); + Debug.Log($"[POST] --- Target file has been fixed: {targetPath}"); + } + + private string GetTargetPath() + { + return Path.Combine(Application.dataPath, SOURCE_PATH, TARGET_NAME); + } + + + + + + } +} + +#endif \ No newline at end of file diff --git a/Editor/GuruBuildSuit/AndroidMessagingActivityFixer/FirebaseMessagingActivityFixer.cs.meta b/Editor/GuruBuildSuit/AndroidMessagingActivityFixer/FirebaseMessagingActivityFixer.cs.meta new file mode 100644 index 0000000..7edbb50 --- /dev/null +++ b/Editor/GuruBuildSuit/AndroidMessagingActivityFixer/FirebaseMessagingActivityFixer.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: c0ee675e82f14fb48f857d0fd2a82034 +timeCreated: 1726133378 \ No newline at end of file