반응형
인트로
xcode Assertion failed: (false && "compact unwind compressed function offset doesn't fit in 24 bits"), function operator(), file Layout.cpp, line 5758.
위와 같은 애러 전문이 있는 경우는 스크린샷과 같이 타겟 중에서 UnityFramework 선택 후, [Build Settings] -> Linking - General -> Other Linker Flags에서 "+"를 누르고 "-ld64"를 추가하면 된다고 합니다. (정확히는 LD64)
하지만 저같이 젠킨스 등을 통해 빌드 파이프 라인을 이용하여 유니티 빌드부터 XCode 빌드까지 자동화 되어있는 경우는 일일이 추가할 수가 없습니다.
그렇기에 빌드 프로세스 중에 "-ld64"를 자동으로 추가하는 코드가 필요합니다.
스크립트
"Editor" 폴더를 만들어, 폴더 안에 스크립트를 추가해줍니다.
LD64LinkSetting.cs
//#define UNITY_IOS
using System.IO;
using UnityEngine;
#if UNITY_EDITOR
using UnityEditor;
using UnityEditor.Callbacks;
#if UNITY_IOS
using UnityEditor.iOS.Xcode;
#endif
public class LD64LinkSetting : MonoBehaviour
{
#if UNITY_IOS
[PostProcessBuild(10)]
public static void OnPostProcessBuild(BuildTarget target, string pathToBuiltProject)
{
if (target != BuildTarget.iOS) return;
string projectPath = PBXProject.GetPBXProjectPath(pathToBuiltProject);
Debug.Log("[projectPath] " + projectPath);
PBXProject project = new PBXProject();
project.ReadFromString(File.ReadAllText(projectPath));
#if UNITY_2019_4_OR_NEWER
string targetGUID = project.GetUnityFrameworkTargetGuid();
#else
string targetName = PBXProject.GetUnityTargetName(); // note, not "project." ...
string targetGUID = project.TargetGuidByName(targetName);
#endif
// Add `-ld64` to "Other Linker Flags".
project.AddBuildProperty(targetGUID, "OTHER_LDFLAGS", "-ld64");
// Write.
File.WriteAllText(projectPath, project.WriteToString());
}
#endif
}
#endif
위의 코드를 추가하면, 자동으로 XCode 프로젝트에서 "-ld64"가 추가됩니다.
마무리
저와 같은 어려움이 있는 분들께 좋은 정보가 되길 바랍니다.
반응형
'Achaive' 카테고리의 다른 글
Unity, AAB 빌드 시스템에서의 Could not produce class with ID '(number)' 애러 발생 (0) | 2024.04.17 |
---|---|
Unity, 버전 업그레이드 이후 SDK 애러로 인한 빌드 실패 (0) | 2024.03.21 |
Unity, 버전 업그레이드 이슈 Analytics SDK (0) | 2024.03.09 |
Unity, 안드로이드 빌드 오류 또는 Resolution 작동 오류 (0) | 2024.02.27 |
Unity, Gradle 버전 빌드 애러 (0) | 2023.08.22 |
댓글