diff --git a/UnityProject/Assets/Editor/iOSPBXProjectModifier.cs b/UnityProject/Assets/Editor/iOSPBXProjectModifier.cs new file mode 100644 index 000000000..9bb9712d9 --- /dev/null +++ b/UnityProject/Assets/Editor/iOSPBXProjectModifier.cs @@ -0,0 +1,35 @@ +using UnityEditor; +using UnityEditor.Callbacks; +using UnityEditor.iOS.Xcode; + +public class iOSPBXProjectModifier +{ + [PostProcessBuildAttribute] + public static void OnPostProcessBuild(BuildTarget target, string buildPath) + { + // Modify Unity generated Xcode project to enable Unity as a library + if (target == BuildTarget.iOS) + { + // Read project + string projectPath = PBXProject.GetPBXProjectPath(buildPath); + PBXProject project = new PBXProject(); + project.ReadFromFile(projectPath); + + // Get main and framework target guids + string unityMainTargetGuid = project.GetUnityMainTargetGuid(); + string unityFrameworkTargetGuid = project.GetUnityFrameworkTargetGuid(); + + // Set NativeCallProxy plugin header visibility to public + string pluginHeaderGuid = project.FindFileGuidByProjectPath("Libraries/Plugins/iOS/NativeCallProxy.h"); + project.AddPublicHeaderToBuild(unityFrameworkTargetGuid, pluginHeaderGuid); + + // Change data directory target membership to framework only + string dataDirectoryGuid = project.FindFileGuidByProjectPath("Data"); + project.RemoveFileFromBuild(unityMainTargetGuid, dataDirectoryGuid); + project.AddFileToBuild(unityFrameworkTargetGuid, dataDirectoryGuid); + + // Overwrite project + project.WriteToFile(projectPath); + } + } +} \ No newline at end of file diff --git a/UnityProject/Assets/Editor/iOSPBXProjectModifier.cs.meta b/UnityProject/Assets/Editor/iOSPBXProjectModifier.cs.meta new file mode 100644 index 000000000..87c800f2f --- /dev/null +++ b/UnityProject/Assets/Editor/iOSPBXProjectModifier.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 2a9df7e21d48b4196b32ba6bc8cbd6fe \ No newline at end of file diff --git a/docs/images/ios/dataTargetMembership.png b/docs/images/ios/dataTargetMembership.png deleted file mode 100644 index 1373a57aa..000000000 Binary files a/docs/images/ios/dataTargetMembership.png and /dev/null differ diff --git a/docs/images/ios/nativeCallProxyTarget.png b/docs/images/ios/nativeCallProxyTarget.png deleted file mode 100644 index 724efeea6..000000000 Binary files a/docs/images/ios/nativeCallProxyTarget.png and /dev/null differ diff --git a/docs/ios.md b/docs/ios.md index b1b3254f6..e385b4c0a 100644 --- a/docs/ios.md +++ b/docs/ios.md @@ -37,18 +37,9 @@ This document explains how to include Unity as a Library into standard iOS appli - in "Build Phases" tab, expand "Link Binary With Libraries" - remove UnityFramework.framework from the list (select it and press - )
- -**5. Expose NativeCallProxy.h** -
Native application implements NativeCallsProtocol defined in following file: -- In Project navigator, find and select Unity-iPhone / Libraries / Plugins / iOS / NativeCallProxy.h -- enable UnityFramework in Target Membership and set header visibility from project to public (small dropdown on right side to UnityFramework) -
- **6. Make Data folder to be part of the UnityFramework** -
By default Data folder is part of Unity-iPhone target, we change that to make everything encapsulated in one single framework file. - - change Target Membership for Data folder to UnityFramework -
- - (optional) If you want to use Unity-iPhone sheme you need to point UnityFramework to a new place where Data is located by calling from Unity-iPhone/MainApp/main.mm: + **5. (optional) If you want to use Unity-iPhone scheme** + - you need to point UnityFramework to a new place where Data is located by calling from Unity-iPhone/MainApp/main.mm: ``` [ufw setDataBundleId: "com.unity3d.framework"]; // On Demand Resources are not supported in this case. To make them work instead of the calls above