diff --git a/unity/Edtior/PostProcessBuild/PostProcessingBuildAndroid.cs b/unity/Edtior/PostProcessBuild/PostProcessingBuildAndroid.cs new file mode 100644 index 0000000..cc3e6a5 --- /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("[Post Build] Android : Removed intent-filters from AndroidManifest.xml Success!."); + } +} 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