脱力駆動開発記

ゲームアプリを作るエンジニアの技術メモ

MENU

【Unity/Xcode】Library not loaded: @rpath/libswiftCore.dylib でアプリが起動しないエラー

現象

UnityでビルドしたXcodeプロジェクトを、USB経由で実機デバッグしようとした際に次のエラーが出る。

Error loading /var/containers/Bundle/Application/****/ProductName.app/Frameworks/UnityFramework.framework/UnityFramework:  
dlopen(/var/containers/Bundle/Application/****/****.app/Frameworks/UnityFramework.framework/UnityFramework, 265): 
Library not loaded: @rpath/libswiftCore.dylib
  Referenced from: /private/var/containers/Bundle/Application/****/****.app/Frameworks/UnityFramework.framework/UnityFramework
  Reason: image not found

急に起きた..わけではなく、プロジェクトで使用しているUnityを2019.4.20f1から2019.4.37f1にアップデートして、その際に使用しているライブラリやアセットのバージョンも上げた。
おそらく広告で使用しているMAXのSDKが原因。

環境

Unity 2019.4.37f1
MacOS 12.3.1 Monterey
Applovin MAX 11.4.1

対応

XcodeのProject → BuildSettings →ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIESをYesにする

XcodeのProject → BuildSettings → RUNPATH_SEARCH_PATHに /usr/lib/swiftを追加する


1つ目に/usr/lib/swiftが来るようにする

これで直る(はず)

この修正を毎回手動でやるのは面倒なので、PostProcessに↓を追記する。

[PostProcessBuild(999)]
public static void ModifyPbx(BuildTarget buildTarget, string pathToBuiltProject)
{
    if (buildTarget == BuildTarget.iOS) {
        string projPath = pathToBuiltProject + "/Unity-iPhone.xcodeproj/project.pbxproj";
        PBXProject proj = new PBXProject ();
        proj.ReadFromString (File.ReadAllText (projPath));
        string target = proj.GetUnityMainTargetGuid();
        proj.SetBuildProperty(target, "ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES", "YES");
        string runPathSearchPath = proj.GetBuildPropertyForAnyConfig(target, "LD_RUNPATH_SEARCH_PATHS");
        runPathSearchPath = "/usr/lib/swift " + runPathSearchPath;
        proj.SetBuildProperty(target,"LD_RUNPATH_SEARCH_PATHS",runPathSearchPath);
        File.WriteAllText (projPath, proj.WriteToString ());
    }
}

それでも直らない場合

DerivedDataを削除する

$ rm -rf ~/Library/Developer/Xcode/DerivedData/*

Xcodeをクリーンする

cmd + shift + Kでプロジェクトがクリーンされます

このアプリの作業中でした

onelink.to

参考

https://github.com/AppLovin/AppLovin-MAX-SDK-iOS/issues/82
https://stackoverflow.com/questions/26104975/dyld-library-not-loaded-rpath-libswiftcore-dylib-image-not-found