Facebook-sdk-for-unity: iOS11デバイスでSDKv7.21.2を使用すると、起動時にアプリがクラッシュする

作成日 2020年08月18日  ·  8コメント  ·  ソース: facebook/facebook-sdk-for-unity

環境

ここで開発環境を説明し、できるだけ多くの詳細を説明してください。 それらがある場合は、必ず以下を含めてください。

  • Unityエディターバージョン: 2018.4.26f1
  • Unity SDKバージョン: 7.21.2
  • XCode: 11.6
  • インストールプラットフォームとバージョン: iPad4,4実行中[iOS]バージョン11.3.1

期待される結果

クラッシュなし

実績

起動時のゲームクラッシュ:

dyld: Library not loaded: @rpath/libswiftCore.dylib Referenced from: /var/containers/Bundle/Application/6A540FA0-A178-4762-BE4D-1A32AC021D5C/XX.app/XX Reason: image not found

同じビルドがiOS 12.4.413.6デバイスで正常に実行されています

再現する手順

指定されたバージョンを使用して単純なビルドを実行するだけです

bug

最も参考になるコメント

何時間もかけて何度も試した後、この問題を解決する方法を見つけました。 それがあなたにも役立つことを願っています。
これをPostProcessBuildに追加します。

// Fixed Facebook SDK 7.21.2 issue for iOS < 12.2
project.AddBuildProperty(targetGuid, "LD_RUNPATH_SEARCH_PATHS", "$(inherited) @executable_path/Frameworks");

全てのコメント8件

iOSシミュレーターでも簡単に再現できます:(

iOS 11でクラッシュしないようにするための回避策として、次のビルド後のスクリプトを使用しています。

public class FacebookCrashIOS11 : ScriptableObject
{
    [PostProcessBuild]
    public static void OnPostProcess(BuildTarget buildTarget, string buildPath)
    {
        // Only for iOS
        if (buildTarget != BuildTarget.iOS)
        {
            return;
        }

        string projectPath = PBXProject.GetPBXProjectPath(buildPath);
        PBXProject project = new PBXProject();

        // Read.
        project.ReadFromString(File.ReadAllText(projectPath));
        string targetGUID = project.GetUnityMainTargetGuid();

        project.SetBuildProperty(targetGUID, "ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES", "YES"); // Facebook 7.21.2 crashed on iOS 11.0 without this line

        // Write.
        File.WriteAllText(projectPath, project.WriteToString());
    }
}

何時間もかけて何度も試した後、この問題を解決する方法を見つけました。 それがあなたにも役立つことを願っています。
これをPostProcessBuildに追加します。

// Fixed Facebook SDK 7.21.2 issue for iOS < 12.2
project.AddBuildProperty(targetGuid, "LD_RUNPATH_SEARCH_PATHS", "$(inherited) @executable_path/Frameworks");

ios <12.2でも同じ問題が発生し、ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIESに加えてLD_RUNPATH_SEARCH_PATHSでも同じ回避策が見つかりました。

ゲームがメインドキュメントと変更ログで古いOSバージョンをサポートしている場合は、これらが必要であるという明示的なドキュメントを追加すると便利です。

Unityゲームでもこの「起動時にアプリがクラッシュする」という問題が発生していますが、iPhoneXSにはiOS13.6.1が搭載されています。

Unity 2019.4.9f1
Facebook SDK 7.21.2
iOS 13.6.1

=>クラッシュ

FBSDK 7.21.2にアップグレードする前は、プロジェクトにはFBSDK 7.19.0があり、ゲームはクラッシュすることなく動作していました。

私は試した:

project.SetBuildProperty(targetId、 "ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES"、 "YES");
project.AddBuildProperty(targetGuid、 "LD_RUNPATH_SEARCH_PATHS"、 "$(継承)@ execute_path / Frameworks");

しかし、アップロード時にこのエラーが発生しました:

エラーITMS-90206:「バンドルが無効です。「xxxxx.app/Frameworks/UnityFramework.framework」のバンドルに許可されていないファイル「Frameworks」が含まれています。」
iTunes Transporterの戻りステータスは1でした:エラーITMS-90206:「バンドルが無効です。「xxxxx.app/Frameworks/UnityFramework.framework」のバンドルに許可されていないファイル「Frameworks」が含まれています。」

2行目(LD_RUNPATH_SEARCH_PATHS)を削除して再ビルドしたときに、同じ無効なバンドルエラーが発生したため、Unity2019.4.9f1ではALWAYS_EMBED_SWIFT_STANDARD_LIBRARIESによってこのエラーが発生すると思います。

現在、FBSDK 7.19.0に戻す必要があり、クラッシュすることはありません。

FBSDK8.1.0でも同じ問題が発生しました。
iOS 11 <= FBSDKを7.18.1からアップグレードした後にクラッシュする

Unityゲームでもこの「起動時にアプリがクラッシュする」という問題が発生していますが、iPhoneXSにはiOS13.6.1が搭載されています。

Unity 2019.4.9f1
Facebook SDK 7.21.2
iOS 13.6.1

=>クラッシュ

FBSDK 7.21.2にアップグレードする前は、プロジェクトにはFBSDK 7.19.0があり、ゲームはクラッシュすることなく動作していました。

私は試した:

project.SetBuildProperty(targetId、 "ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES"、 "YES");
project.AddBuildProperty(targetGuid、 "LD_RUNPATH_SEARCH_PATHS"、 "$(継承)@ execute_path / Frameworks");

しかし、アップロード時にこのエラーが発生しました:

エラーITMS-90206:「バンドルが無効です。「xxxxx.app/Frameworks/UnityFramework.framework」のバンドルに許可されていないファイル「Frameworks」が含まれています。」
iTunes Transporterの戻りステータスは1でした:エラーITMS-90206:「バンドルが無効です。「xxxxx.app/Frameworks/UnityFramework.framework」のバンドルに許可されていないファイル「Frameworks」が含まれています。」

2行目(LD_RUNPATH_SEARCH_PATHS)を削除して再ビルドしたときに、同じ無効なバンドルエラーが発生したため、Unity2019.4.9f1ではALWAYS_EMBED_SWIFT_STANDARD_LIBRARIESによってこのエラーが発生すると思います。

現在、FBSDK 7.19.0に戻す必要があり、クラッシュすることはありません。

私も得た
Return status of iTunes Transporter was 1: ERROR ITMS-90206: "Invalid Bundle. The bundle at 'xxxxx.app/Frameworks/UnityFramework.framework' contains disallowed file 'Frameworks'."

それを解決するために、現在のアーカイブを削除して再アーカイブしたところ、受け入れられました

作業フォームを見つけました。次のリンクを確認してください。
https://github.com/facebook/facebook-sdk-for-unity/issues/193#issuecomment -754953304

このページは役に立ちましたか?
0 / 5 - 0 評価