Skip to content

Commit 3e9a7ab

Browse files
committed
refactor; add comments
1 parent 2f66f14 commit 3e9a7ab

File tree

1 file changed

+27
-23
lines changed

1 file changed

+27
-23
lines changed
Lines changed: 27 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,42 @@
1-
using UnityEngine;
21
using UnityEditor;
3-
using UnityEditor.Callbacks;
42
using UnityEditor.iOS.Xcode;
53

64
public class PostProcessBuild
75
{
8-
[PostProcessBuildAttribute]
6+
[UnityEditor.Callbacks.PostProcessBuildAttribute]
97
public static void OnPostprocessBuild(BuildTarget target, string buildPath)
108
{
9+
/* Edit iOS project to enable Unity as a library:
10+
github.com/Unity-Technologies/uaal-example/blob/master/docs/ios.md */
1111
if (target == BuildTarget.iOS)
1212
{
13-
string pbxPath = PBXProject.GetPBXProjectPath(buildPath);
14-
PBXProject pbx = new PBXProject();
15-
pbx.ReadFromFile(pbxPath);
13+
// Read project
14+
string projectPath = PBXProject.GetPBXProjectPath(buildPath);
15+
PBXProject project = new PBXProject();
16+
project.ReadFromFile(projectPath);
1617

17-
string dataDirectoryXcodePath = "Data";
18-
string pluginHeaderXcodePath = "Libraries/Plugins/iOS/NativeState.h";
19-
string modulemapXcodePath = "UnityFramework/UnityFramework.modulemap";
20-
string modulemapUnityPath = "Assets/Plugins/iOS/UnityFramework.modulemap";
21-
string modulemapDestinationPath = $"{buildPath}/{modulemapXcodePath}";
22-
string modulemapBuildPropertyName = "MODULEMAP_FILE";
23-
string unityMainTargetGuid = pbx.GetUnityMainTargetGuid();
24-
string unityFrameworkTargetGuid = pbx.GetUnityFrameworkTargetGuid();
25-
string dataDirectoryGuid = pbx.FindFileGuidByProjectPath(dataDirectoryXcodePath);
26-
string pluginHeaderGuid = pbx.FindFileGuidByProjectPath(pluginHeaderXcodePath);
18+
// Get main and framework target guids
19+
string unityMainTargetGuid = project.GetUnityMainTargetGuid();
20+
string unityFrameworkTargetGuid = project.GetUnityFrameworkTargetGuid();
2721

28-
FileUtil.CopyFileOrDirectory(modulemapUnityPath, modulemapDestinationPath);
29-
pbx.AddFile(modulemapDestinationPath, modulemapXcodePath);
30-
pbx.AddBuildProperty(unityFrameworkTargetGuid, modulemapBuildPropertyName, modulemapXcodePath);
31-
pbx.RemoveFileFromBuild(unityMainTargetGuid, dataDirectoryGuid);
32-
pbx.AddFileToBuild(unityFrameworkTargetGuid, dataDirectoryGuid);
33-
pbx.AddPublicHeaderToBuild(unityFrameworkTargetGuid, pluginHeaderGuid);
22+
// Set NativeState plugin header visibility to public
23+
string pluginHeaderGuid = project.FindFileGuidByProjectPath("Libraries/Plugins/iOS/NativeState.h");
24+
project.AddPublicHeaderToBuild(unityFrameworkTargetGuid, pluginHeaderGuid);
3425

35-
pbx.WriteToFile(pbxPath);
26+
// Change data directory target membership to framework only
27+
string dataDirectoryGuid = project.FindFileGuidByProjectPath("Data");
28+
project.RemoveFileFromBuild(unityMainTargetGuid, dataDirectoryGuid);
29+
project.AddFileToBuild(unityFrameworkTargetGuid, dataDirectoryGuid);
30+
31+
// Include modulemap so Swift can import NativeState plugin
32+
string modulemapRelativePath = "UnityFramework/UnityFramework.modulemap";
33+
string modulemapAbsolutePath = $"{buildPath}/{modulemapRelativePath}";
34+
FileUtil.CopyFileOrDirectory("Assets/Plugins/iOS/UnityFramework.modulemap", modulemapAbsolutePath);
35+
project.AddFile(modulemapAbsolutePath, modulemapRelativePath);
36+
project.AddBuildProperty(unityFrameworkTargetGuid, "MODULEMAP_FILE", modulemapRelativePath);
37+
38+
// Overwrite project
39+
project.WriteToFile(projectPath);
3640
}
3741
}
3842
}

0 commit comments

Comments
 (0)