killapp/Assets/Editor/iOSFixDuplicateShellScript.cs
“虞渠成” a01ff23268 feat: 新增音效资源并优化音效选择功能
1. 新增Arc、Ion、Sonic、Plasma、Quantum、Hardlight共6种音效资源及导入配置
2. 为多选弹窗组件添加点击回调事件,支持选项点击预览音效
3. 为音画设置页面添加音效预览功能,绑定新增的音效资源
4. 修复iOS构建脚本的编译宏条件问题
5. 更新.gitignore忽略灭蚊_mapping.txt文件
2026-07-07 10:32:26 +08:00

97 lines
3.0 KiB
C#

using UnityEditor;
using UnityEditor.Callbacks;
#if UNITY_IOS
using UnityEditor.iOS.Xcode;
#endif
using System.IO;
using System.Text.RegularExpressions;
using UnityEngine;
public class iOSFixDuplicateShellScript
{
#if UNITY_IOS
[PostProcessBuild(999)]
public static void OnPostProcessBuild(BuildTarget target, string pathToBuiltProject)
{
if (target != BuildTarget.iOS) return;
FixDuplicateShellScript(pathToBuiltProject);
FixPodfile(pathToBuiltProject);
AddNetworkExtensionFramework(pathToBuiltProject);
}
private static void FixDuplicateShellScript(string pathToBuiltProject)
{
string projPath = Path.Combine(pathToBuiltProject, "Unity-iPhone.xcodeproj/project.pbxproj");
if (!File.Exists(projPath))
{
Debug.LogWarning("[PostProcess] pbxproj not found: " + projPath);
return;
}
string content = File.ReadAllText(projPath);
string pattern = @"(\t+([A-F0-9]+) /\* ShellScript \*/,)\r?\n\t+\2 /\* ShellScript \*,/";
string newContent = Regex.Replace(content, pattern, "$1");
if (newContent != content)
{
File.WriteAllText(projPath, newContent);
Debug.Log("[PostProcess] Removed duplicate ShellScript from GameAssembly target");
}
// 修复光子矩阵 app 大小写
newContent = newContent.Replace("photonmatrix.app", "PhotonMatrix.app");
File.WriteAllText(projPath, newContent);
}
private static void FixPodfile(string pathToBuiltProject)
{
string podfilePath = Path.Combine(pathToBuiltProject, "Podfile");
if (!File.Exists(podfilePath))
{
Debug.LogWarning("[PostProcess] Podfile not found");
return;
}
string content = File.ReadAllText(podfilePath);
bool modified = false;
if (content.Contains("Firebase/Analytics"))
{
content = Regex.Replace(content, @"\s*pod\s+'Firebase/Analytics'[^\n]*\n?", "\n");
modified = true;
}
if (content.Contains("12.4.0"))
{
content = content.Replace("12.4.0", "12.14.0");
modified = true;
}
if (modified)
{
File.WriteAllText(podfilePath, content);
Debug.Log("[PostProcess] Cleaned up Podfile");
}
}
private static void AddNetworkExtensionFramework(string pathToBuiltProject)
{
string projPath = PBXProject.GetPBXProjectPath(pathToBuiltProject);
PBXProject proj = new PBXProject();
proj.ReadFromString(File.ReadAllText(projPath));
string unityFrameworkGuid = proj.GetUnityFrameworkTargetGuid();
bool added = proj.AddFrameworkToProject(unityFrameworkGuid, "NetworkExtension.framework", false);
if (added)
{
File.WriteAllText(projPath, proj.WriteToString());
Debug.Log("[PostProcess] Added NetworkExtension.framework");
}
}
#endif
}