Facebook-sdk-for-unity: Приложение вылетает при запуске при использовании SDK v7.21.2 на устройстве iOS 11

Созданный на 18 авг. 2020  ·  8Комментарии  ·  Источник: facebook/facebook-sdk-for-unity

Среда

Опишите здесь свою среду разработки, предоставив как можно больше подробностей. Если они у вас есть, обязательно включите:

  • Версия редактора Unity: 2018.4.26f1
  • Версия Unity SDK: 7.21.2
  • XCode: 11.6
  • Платформа и версия установки: iPad4,4 running [iOS] version 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.4 и 13.6

Действия по воспроизведению

Просто сделайте простую сборку, используя указанную версию

Самый полезный комментарий

После того, как потребовалось много часов и много попыток, я нашел способ решить эту проблему. Надеюсь, это тебе тоже поможет.
Добавьте это в свой 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, и я нашел такое же решение с LD_RUNPATH_SEARCH_PATHS в дополнение к ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES.

Было бы здорово добавить явную документацию, которая требуется, если игра поддерживает более старые версии ОС в основной документации и в журнале изменений.

Я также испытываю "сбой приложения при запуске" с моей игрой Unity, но на моем iPhone XS установлена ​​iOS 13.6.1.

Единство 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», «ДА»);
project.AddBuildProperty (targetGuid, «LD_RUNPATH_SEARCH_PATHS», «$ (унаследовано) @ исполняемый_путь / Frameworks»);

но получил эту ошибку при загрузке:

ОШИБКА ITMS-90206: «Недопустимый пакет. Пакет по адресу 'xxxxx.app/Frameworks/UnityFramework.framework' содержит запрещенный файл 'Frameworks'».
Статус возврата iTunes Transporter был 1: ОШИБКА ITMS-90206: «Недопустимый пакет. Пакет на 'xxxxx.app/Frameworks/UnityFramework.framework' содержит запрещенный файл 'Frameworks'».

Я предполагаю, что ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES вызывает эту ошибку для Unity 2019.4.9f1, потому что, когда я удалил вторую строку (LD_RUNPATH_SEARCH_PATHS) и перестроил, я все еще получил ту же ошибку Invalid Bundle.

В настоящее время мне нужно вернуться к FBSDK 7.19.0 и больше никаких сбоев.

У меня была такая же проблема с FBSDK 8.1.0.
ios 11 <= сбой после обновления FBSDK с 7.18.1

Я также испытываю "сбой приложения при запуске" с моей игрой Unity, но на моем iPhone XS установлена ​​iOS 13.6.1.

Единство 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», «ДА»);
project.AddBuildProperty (targetGuid, «LD_RUNPATH_SEARCH_PATHS», «$ (унаследовано) @ исполняемый_путь / Frameworks»);

но получил эту ошибку при загрузке:

ОШИБКА ITMS-90206: «Недопустимый пакет. Пакет по адресу 'xxxxx.app/Frameworks/UnityFramework.framework' содержит запрещенный файл 'Frameworks'».
Статус возврата iTunes Transporter был 1: ОШИБКА ITMS-90206: «Недопустимый пакет. Пакет на 'xxxxx.app/Frameworks/UnityFramework.framework' содержит запрещенный файл 'Frameworks'».

Я предполагаю, что ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES вызывает эту ошибку для Unity 2019.4.9f1, потому что, когда я удалил вторую строку (LD_RUNPATH_SEARCH_PATHS) и перестроил, я все еще получил ту же ошибку Invalid Bundle.

В настоящее время мне нужно вернуться к 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 рейтинги