82 lines
2.6 KiB
C#
82 lines
2.6 KiB
C#
|
|
#if UNITY_IOS
|
|||
|
|
using UnityEditor;
|
|||
|
|
using UnityEditor.Callbacks;
|
|||
|
|
using System.IO;
|
|||
|
|
using System.Diagnostics;
|
|||
|
|
|
|||
|
|
public class FirebaseIosPodfilePostProcessor
|
|||
|
|
{
|
|||
|
|
[PostProcessBuild(100)] // 优先级设为 100,在其他后处理之后执行
|
|||
|
|
public static void OnPostProcessBuild(BuildTarget target, string pathToBuiltProject)
|
|||
|
|
{
|
|||
|
|
if (target != BuildTarget.iOS) return;
|
|||
|
|
|
|||
|
|
string podfilePath = Path.Combine(pathToBuiltProject, "Podfile");
|
|||
|
|
|
|||
|
|
// 生成 Podfile
|
|||
|
|
string podfileContent = @"source 'https://cdn.cocoapods.org/'
|
|||
|
|
|
|||
|
|
platform :ios, '15.0'
|
|||
|
|
|
|||
|
|
target 'UnityFramework' do
|
|||
|
|
pod 'Firebase/Core', '12.4.0'
|
|||
|
|
pod 'Firebase/Auth', '12.4.0'
|
|||
|
|
pod 'Firebase/Database', '12.4.0'
|
|||
|
|
pod 'Firebase/Messaging', '12.4.0'
|
|||
|
|
end
|
|||
|
|
target 'Unity-iPhone' do
|
|||
|
|
end
|
|||
|
|
use_frameworks! :linkage => :static
|
|||
|
|
";
|
|||
|
|
|
|||
|
|
File.WriteAllText(podfilePath, podfileContent);
|
|||
|
|
UnityEngine.Debug.Log("[FirebaseIosPostProcessor] Podfile 已生成: " + podfilePath);
|
|||
|
|
|
|||
|
|
// 尝试自动运行 pod install
|
|||
|
|
TryRunPodInstall(pathToBuiltProject);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private static void TryRunPodInstall(string projectPath)
|
|||
|
|
{
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
ProcessStartInfo startInfo = new ProcessStartInfo
|
|||
|
|
{
|
|||
|
|
FileName = "pod",
|
|||
|
|
Arguments = "install",
|
|||
|
|
WorkingDirectory = projectPath,
|
|||
|
|
UseShellExecute = false,
|
|||
|
|
RedirectStandardOutput = true,
|
|||
|
|
RedirectStandardError = true,
|
|||
|
|
CreateNoWindow = true
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
using (Process process = Process.Start(startInfo))
|
|||
|
|
{
|
|||
|
|
string stdout = process.StandardOutput.ReadToEnd();
|
|||
|
|
string stderr = process.StandardError.ReadToEnd();
|
|||
|
|
process.WaitForExit();
|
|||
|
|
|
|||
|
|
if (process.ExitCode == 0)
|
|||
|
|
{
|
|||
|
|
UnityEngine.Debug.Log("[FirebaseIosPostProcessor] pod install 成功");
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
UnityEngine.Debug.LogWarning("[FirebaseIosPostProcessor] pod install 失败:\n" + stderr);
|
|||
|
|
UnityEngine.Debug.LogWarning("[FirebaseIosPostProcessor] 请手动在 " + projectPath + " 目录下执行 pod install");
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
catch (System.Exception e)
|
|||
|
|
{
|
|||
|
|
UnityEngine.Debug.LogWarning("[FirebaseIosPostProcessor] 未找到 CocoaPods,请手动执行:\n" +
|
|||
|
|
" 1. 安装 CocoaPods: sudo gem install cocoapods\n" +
|
|||
|
|
" 2. cd " + projectPath + "\n" +
|
|||
|
|
" 3. pod install\n" +
|
|||
|
|
" 错误: " + e.Message);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
#endif
|