From c5b0593a773959b4a4dae2b05534e470d8e16e9b Mon Sep 17 00:00:00 2001 From: menstood Date: Thu, 1 May 2025 15:58:51 +0700 Subject: [PATCH 1/3] feat: add post-build processing for Android to remove intent-filters from AndroidManifest.xml --- .../PostProcessingBuildAndroid.cs | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 unity/Edtior/PostProcessBuild/PostProcessingBuildAndroid.cs diff --git a/unity/Edtior/PostProcessBuild/PostProcessingBuildAndroid.cs b/unity/Edtior/PostProcessBuild/PostProcessingBuildAndroid.cs new file mode 100644 index 0000000..4f269bb --- /dev/null +++ b/unity/Edtior/PostProcessBuild/PostProcessingBuildAndroid.cs @@ -0,0 +1,37 @@ +using UnityEditor; +using UnityEditor.Callbacks; +using UnityEngine; +using System.IO; +using System.Xml; + +public class PostProcessingBuildAndroid +{ + [PostProcessBuild(1)] + public static void OnPostBuild(BuildTarget target, string pathToBuiltProject) + { + if (target != BuildTarget.Android) return; + + var manifestPath = Path.Combine(pathToBuiltProject, "src", "main", "AndroidManifest.xml"); + if (!File.Exists(manifestPath)) return; + + XmlDocument manifest = new XmlDocument(); + manifest.Load(manifestPath); + + XmlNode appNode = manifest.SelectSingleNode("/manifest/application"); + + if (appNode != null) + { + foreach (XmlNode activityNode in appNode.SelectNodes(".//activity")) + { + var intentFilters = activityNode.SelectNodes("intent-filter"); + for (int i = intentFilters.Count - 1; i >= 0; i--) + { + activityNode.RemoveChild(intentFilters[i]); + } + } + } + + manifest.Save(manifestPath); + Debug.Log("Removed intent-filters from AndroidManifest.xml Success!."); + } +} From 864970105c86cb44d599905c386971056bc4c8f2 Mon Sep 17 00:00:00 2001 From: menstood Date: Thu, 1 May 2025 17:45:01 +0700 Subject: [PATCH 2/3] feat: implement post-build processing for iOS to manage Data folder and NativeCallProxy.h visibility --- .../PostProcessingBuildIOS.cs | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 unity/Edtior/PostProcessBuild/PostProcessingBuildIOS.cs diff --git a/unity/Edtior/PostProcessBuild/PostProcessingBuildIOS.cs b/unity/Edtior/PostProcessBuild/PostProcessingBuildIOS.cs new file mode 100644 index 0000000..9fc2362 --- /dev/null +++ b/unity/Edtior/PostProcessBuild/PostProcessingBuildIOS.cs @@ -0,0 +1,53 @@ +using UnityEditor; +using UnityEditor.Callbacks; +using UnityEditor.iOS.Xcode; +using UnityEngine; + +public class PostBuildIOS +{ + [PostProcessBuild] + public static void OnPostBuild(BuildTarget target, string pathToBuiltProject) + { + if (target != BuildTarget.iOS) return; + + string projPath = PBXProject.GetPBXProjectPath(pathToBuiltProject); + PBXProject proj = new PBXProject(); + proj.ReadFromFile(projPath); + +#if UNITY_2019_3_OR_NEWER + string frameworkTarget = proj.GetUnityFrameworkTargetGuid(); + string mainTarget = proj.GetUnityMainTargetGuid(); +#else + string frameworkTarget = proj.TargetGuidByName("UnityFramework"); + string mainTarget = proj.TargetGuidByName("Unity-iPhone"); +#endif + + // Change Data folder to UnityFramework + string dataFolderPath = "Data"; + string dataFolderGuid = proj.FindFileGuidByProjectPath(dataFolderPath); + if (!string.IsNullOrEmpty(dataFolderGuid)) + { + proj.RemoveFileFromBuild(mainTarget, dataFolderGuid); + proj.AddFileToBuild(frameworkTarget, dataFolderGuid); + Debug.Log("[Post Build] iOS : 'Data' folder reassigned to UnityFramework."); + } + + // Change NativeCallProxy.h to Public + string headerPath = "Libraries/Plugins/iOS/NativeCallProxy.h"; + string headerGuid = proj.FindFileGuidByProjectPath(headerPath); + + if (!string.IsNullOrEmpty(headerGuid)) + { + proj.RemoveFileFromBuild(mainTarget, headerGuid); + proj.AddPublicHeaderToBuild(frameworkTarget, headerGuid); + + Debug.Log("[Post Build] iOS : NativeCallProxy.h set as Public in UnityFramework."); + } + else + { + Debug.LogWarning("[Post Build] iOS : NativeCallProxy.h not found. Check Unity export path."); + } + + proj.WriteToFile(projPath); + } +} \ No newline at end of file From 5361256db04c1ddfadaec54fe9c1047e56b838d2 Mon Sep 17 00:00:00 2001 From: menstood Date: Thu, 1 May 2025 17:45:22 +0700 Subject: [PATCH 3/3] fix: update log message format for intent-filters removal in AndroidManifest.xml --- unity/Edtior/PostProcessBuild/PostProcessingBuildAndroid.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/unity/Edtior/PostProcessBuild/PostProcessingBuildAndroid.cs b/unity/Edtior/PostProcessBuild/PostProcessingBuildAndroid.cs index 4f269bb..cc3e6a5 100644 --- a/unity/Edtior/PostProcessBuild/PostProcessingBuildAndroid.cs +++ b/unity/Edtior/PostProcessBuild/PostProcessingBuildAndroid.cs @@ -32,6 +32,6 @@ public static void OnPostBuild(BuildTarget target, string pathToBuiltProject) } manifest.Save(manifestPath); - Debug.Log("Removed intent-filters from AndroidManifest.xml Success!."); + Debug.Log("[Post Build] Android : Removed intent-filters from AndroidManifest.xml Success!."); } }