Skip to content

Commit 75810c6

Browse files
committed
add modulemap and post build script to automate unity framework and plugin integration
1 parent d1e2d73 commit 75810c6

File tree

5 files changed

+75
-0
lines changed

5 files changed

+75
-0
lines changed

UnityProject/Assets/Editor.meta

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
using UnityEngine;
2+
using UnityEditor;
3+
using UnityEditor.Callbacks;
4+
using UnityEditor.iOS.Xcode;
5+
6+
public class PostProcessBuild
7+
{
8+
[PostProcessBuildAttribute]
9+
public static void OnPostprocessBuild(BuildTarget target, string buildPath)
10+
{
11+
if (target == BuildTarget.iOS)
12+
{
13+
string pbxPath = PBXProject.GetPBXProjectPath(buildPath);
14+
PBXProject pbx = new PBXProject();
15+
pbx.ReadFromFile(pbxPath);
16+
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);
27+
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);
34+
35+
pbx.WriteToFile(pbxPath);
36+
}
37+
}
38+
}

UnityProject/Assets/Editor/PostProcessBuild.cs.meta

Lines changed: 11 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
framework module UnityFramework {
2+
umbrella header "UnityFramework.h"
3+
4+
export *
5+
module * { export * }
6+
7+
module NativeState {
8+
header "NativeState.h"
9+
export *
10+
}
11+
}

UnityProject/Assets/Plugins/iOS/UnityFramework.modulemap.meta

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)