[new] 支持visionOS平台

[fix] 修复tvOS平台使用了错误的Unity-iPhone.xcodeproj路径导致找不到project.pbxproj的bug
main
walon 2024-05-29 14:48:05 +08:00 committed by walon
parent 846d7103a3
commit 47622bf49c
6 changed files with 46 additions and 40 deletions

View File

@ -17,18 +17,6 @@ namespace HybridCLR.Editor.BuildProcessors
{ {
public static class AddLil2cppSourceCodeToXcodeproj2019 public static class AddLil2cppSourceCodeToXcodeproj2019
{ {
//[MenuItem("Test/GenProj")]
//public static void Modify()
//{
// OnPostProcessBuild(BuildTarget.iOS, $"{SettingsUtil.ProjectDir}/Build-iOS");
//}
//[MenuItem("Test/CreateLumps")]
//public static void CreateLumpsCmd()
//{
// CreateLumps($"{SettingsUtil.LocalIl2CppDir}/libil2cpp", $"{SettingsUtil.HybridCLRDataDir}/lumps");
//}
[PostProcessBuild] [PostProcessBuild]
public static void OnPostProcessBuild(BuildTarget target, string pathToBuiltProject) public static void OnPostProcessBuild(BuildTarget target, string pathToBuiltProject)
{ {
@ -47,7 +35,7 @@ namespace HybridCLR.Editor.BuildProcessors
10. add "#include <stdio.h>" to Classes/Prefix.pch 10. add "#include <stdio.h>" to Classes/Prefix.pch
*/ */
string pbxprojFile = $"{pathToBuiltProject}/Unity-iPhone.xcodeproj/project.pbxproj"; string pbxprojFile = BuildProcessorUtil.GetXcodeProjectFile(pathToBuiltProject);
string srcLibil2cppDir = $"{SettingsUtil.LocalIl2CppDir}/libil2cpp"; string srcLibil2cppDir = $"{SettingsUtil.LocalIl2CppDir}/libil2cpp";
string dstLibil2cppDir = $"{pathToBuiltProject}/Libraries/libil2cpp"; string dstLibil2cppDir = $"{pathToBuiltProject}/Libraries/libil2cpp";
string lumpDir = $"{pathToBuiltProject}/Libraries/lumps"; string lumpDir = $"{pathToBuiltProject}/Libraries/lumps";

View File

@ -17,17 +17,6 @@ namespace HybridCLR.Editor.BuildProcessors
{ {
public static class AddLil2cppSourceCodeToXcodeproj2020Or2021 public static class AddLil2cppSourceCodeToXcodeproj2020Or2021
{ {
//[MenuItem("Test/GenProj")]
//public static void Modify()
//{
// OnPostProcessBuild(BuildTarget.iOS, $"{SettingsUtil.ProjectDir}/Build-iOS");
//}
//[MenuItem("Test/CreateLumps")]
//public static void CreateLumpsCmd()
//{
// CreateLumps($"{SettingsUtil.LocalIl2CppDir}/libil2cpp", $"{SettingsUtil.HybridCLRDataDir}/lumps");
//}
[PostProcessBuild] [PostProcessBuild]
public static void OnPostProcessBuild(BuildTarget target, string pathToBuiltProject) public static void OnPostProcessBuild(BuildTarget target, string pathToBuiltProject)
@ -46,7 +35,7 @@ namespace HybridCLR.Editor.BuildProcessors
9. add external/xxHash 9. add external/xxHash
*/ */
string pbxprojFile = $"{pathToBuiltProject}/Unity-iPhone.xcodeproj/project.pbxproj"; string pbxprojFile = BuildProcessorUtil.GetXcodeProjectFile(pathToBuiltProject);
string srcLibil2cppDir = $"{SettingsUtil.LocalIl2CppDir}/libil2cpp"; string srcLibil2cppDir = $"{SettingsUtil.LocalIl2CppDir}/libil2cpp";
string dstLibil2cppDir = $"{pathToBuiltProject}/Libraries/libil2cpp"; string dstLibil2cppDir = $"{pathToBuiltProject}/Libraries/libil2cpp";
string lumpDir = $"{pathToBuiltProject}/Libraries/lumps"; string lumpDir = $"{pathToBuiltProject}/Libraries/lumps";

View File

@ -7,28 +7,19 @@ using UnityEditor.Build;
using UnityEditor.Callbacks; using UnityEditor.Callbacks;
using UnityEngine; using UnityEngine;
#if UNITY_2022_2_OR_NEWER && (UNITY_IOS || UNITY_TVOS) #if UNITY_2022_2_OR_NEWER && (UNITY_IOS || UNITY_TVOS || UNITY_VISIONOS)
namespace HybridCLR.Editor.BuildProcessors namespace HybridCLR.Editor.BuildProcessors
{ {
public static class AddLil2cppSourceCodeToXcodeproj2022OrNewer public static class AddLil2cppSourceCodeToXcodeproj2022OrNewer
{ {
//[MenuItem("HybridCLR/Modfiyxcode")]
//public static void Modify()
//{
// OnPostProcessBuild(BuildTarget.iOS, $"{SettingsUtil.ProjectDir}/Build-iOS");
//}
[PostProcessBuild] [PostProcessBuild]
public static void OnPostProcessBuild(BuildTarget target, string pathToBuiltProject) public static void OnPostProcessBuild(BuildTarget target, string pathToBuiltProject)
{ {
if (!HybridCLRSettings.Instance.enable) if (!HybridCLRSettings.Instance.enable)
return; return;
#if TUANJIE_2022_3_OR_NEWER string pbxprojFile = BuildProcessorUtil.GetXcodeProjectFile(pathToBuiltProject);
string pbxprojFile = $"{pathToBuiltProject}/Tuanjie-iPhone.xcodeproj/project.pbxproj";
#else
string pbxprojFile = $"{pathToBuiltProject}/Unity-iPhone.xcodeproj/project.pbxproj";
#endif
RemoveExternalLibil2cppOption(pbxprojFile); RemoveExternalLibil2cppOption(pbxprojFile);
CopyLibil2cppToXcodeProj(pathToBuiltProject); CopyLibil2cppToXcodeProj(pathToBuiltProject);
} }

View File

@ -0,0 +1,25 @@
using System;
using System.IO;
using UnityEditor.Build;
namespace HybridCLR.Editor.BuildProcessors
{
public static class BuildProcessorUtil
{
public static string GetXcodeProjectFile(string pathToBuiltProject)
{
foreach (string dir in Directory.GetDirectories(pathToBuiltProject, "*.xcodeproj", SearchOption.TopDirectoryOnly))
{
string pbxprojFile = $"{dir}/project.pbxproj";
if (File.Exists(pbxprojFile))
{
return pbxprojFile;
}
}
throw new BuildFailedException($"can't find xxxx.xcodeproj/project.pbxproj in {pathToBuiltProject}");
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: c680e56f90f2745298a90803c04f6efc
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -36,8 +36,12 @@ namespace HybridCLR.Editor.BuildProcessors
case BuildTarget.Android: case BuildTarget.Android:
return $"{projectDir}/Library/Bee/artifacts/Android/ManagedStripped"; return $"{projectDir}/Library/Bee/artifacts/Android/ManagedStripped";
case BuildTarget.iOS: case BuildTarget.iOS:
case BuildTarget.tvOS:
#if UNITY_2022_3_OR_NEWER
case BuildTarget.VisionOS:
#endif
return $"{projectDir}/Library/Bee/artifacts/iOS/ManagedStripped"; return $"{projectDir}/Library/Bee/artifacts/iOS/ManagedStripped";
case BuildTarget.WebGL: case BuildTarget.WebGL:
return $"{projectDir}/Library/Bee/artifacts/WebGL/ManagedStripped"; return $"{projectDir}/Library/Bee/artifacts/WebGL/ManagedStripped";
case BuildTarget.StandaloneOSX: case BuildTarget.StandaloneOSX:
return $"{projectDir}/Library/Bee/artifacts/MacStandalonePlayerBuildProgram/ManagedStripped"; return $"{projectDir}/Library/Bee/artifacts/MacStandalonePlayerBuildProgram/ManagedStripped";
@ -45,8 +49,6 @@ namespace HybridCLR.Editor.BuildProcessors
return $"{projectDir}/Library/Bee/artifacts/PS4PlayerBuildProgram/ManagedStripped"; return $"{projectDir}/Library/Bee/artifacts/PS4PlayerBuildProgram/ManagedStripped";
case BuildTarget.PS5: case BuildTarget.PS5:
return $"{projectDir}/Library/Bee/artifacts/PS5PlayerBuildProgram/ManagedStripped"; return $"{projectDir}/Library/Bee/artifacts/PS5PlayerBuildProgram/ManagedStripped";
case BuildTarget.tvOS:
return $"{projectDir}/Library/Bee/artifacts/iOS/ManagedStripped";
#if TUANJIE_2022_3_OR_NEWER #if TUANJIE_2022_3_OR_NEWER
case BuildTarget.WeixinMiniGame: case BuildTarget.WeixinMiniGame:
return $"{projectDir}/Library/Bee/artifacts/WeixinMiniGame/ManagedStripped"; return $"{projectDir}/Library/Bee/artifacts/WeixinMiniGame/ManagedStripped";