Facebook-sdk-for-unity: Unity 2019.3 - библиотека для -lFBSDKCoreKit не найдена

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

Контрольный список

Среда

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

  • Версия редактора Unity: 2019.3.6f1
  • Версия Unity SDK: 7.19.1
  • Платформа установки и версия: iOS version 10+ XCode 11.3.1 '

Цели

Сборка для iOS с использованием Unity 2019.3

Ожидаемые результаты

Удачная сборка

Фактические результаты

Компиляция не удалась, потому что библиотека -lFBSDKCoreKit не найдена.
Другие проблемы закрыты, но не исправлены в Facebook SDK 7.19+:

https://github.com/facebook/facebook-sdk-for-unity/issues/352
https://github.com/facebook/facebook-sdk-for-unity/issues/350

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

Создавайте свежий проект в единстве
Установите пакет FB SDK (7.19.1)
Сборка Unity Project (2019.3.6f1)
Попробуйте собрать проект Xcode на Xcode (версия 11.3.1)
Проверить ошибки

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

Я была такая же проблема. Хотя независимо от того, что я установил для своего поколения cocoapod в Unity Play Services Resolver, .xcworkspace не создавался.

Как я это исправил:
откройте терминал в корневой папке вашего проекта и запустите
pod install
это создало файл .xcworkspace. После его открытия, добавления информации для подписи и т. Д., Как обычно, а затем его создания, он, наконец, сработал.

Все 16 Комментарий

У меня точно такая же проблема.
Единство: 2019.3.6f1
FB SDK: (7.19.1)
XCode: 11.3.1

Точно такая же проблема.
Единство: 2018.4.5f1 (LTS)
FB SDK: 7.19.1
XCode: 11.3.1

Думаю, я просто понял, в чем проблема. Я создавал проект Unity из файла проекта, тогда как с cocoapods вам нужно открыть проект в xcode из файла рабочей области, поскольку он включает проект единства И проект cocoapods. Никогда раньше не создавал ничего из файла рабочего пространства с помощью Unity. Виноват.

@flamepygmy
Это тоже решило проблему для меня. :-)
Я совершенно не знаком с XCode, но полагаю, что рабочее пространство сопоставимо с решением Visual Studio. До сих пор я всегда дважды щелкал файл .xcodeproj.

Я была такая же проблема. Хотя независимо от того, что я установил для своего поколения cocoapod в Unity Play Services Resolver, .xcworkspace не создавался.

Как я это исправил:
откройте терминал в корневой папке вашего проекта и запустите
pod install
это создало файл .xcworkspace. После его открытия, добавления информации для подписи и т. Д., Как обычно, а затем его создания, он, наконец, сработал.

В настоящее время я также переношу свою обычную игру на версию 2019.3 и сталкиваюсь с той же проблемой.

Кажется, это проблема, когда FBSDKCOCOAPODS=1 включается в качестве макроса препроцессора основной цели ( Unity-iPhone ) вместо UnityFramework , на который нацелен IOSResolver и включает весь исходный код экспортируется при построении рабочего пространства XCode.

Без этого макроса FBSDKCoreKitImport.h конечном итоге будет указывать на неправильное включение / импорт:

#if defined BUCK
#import <FBSDKCoreKit/FBSDKCoreKit.h>
#elif defined __cplusplus
#import <FBSDKCoreKit.h>
#elif defined FBSDKCOCOAPODS
#import <FBSDKCoreKit/FBSDKCoreKit.h>
#else
<strong i="13">@import</strong> FBSDKCoreKit;
#endif

Заглянув в исходный код SDK Facebook, я думаю, что проблема в FixupFiles.cs :
`` С #
public static void AddBuildFlag (строковый путь)
{
string projPath = Path.Combine (путь, Path.Combine ("Unity-iPhone.xcodeproj", "project.pbxproj"));
PBXProject proj = новый PBXProject ();
proj.ReadFromString (File.ReadAllText (projPath));
строка targetGUID = proj.TargetGuidByName («Unity-iPhone»);
proj.AddBuildProperty (targetGUID, «GCC_PREPROCESSOR_DEFINITIONS», «$ (унаследовано) FBSDKCOCOAPODS = 1»);
proj.AddBuildProperty (targetGUID, "OTHER_LDFLAGS", "-ObjC");
proj.AddFrameworkToProject (targetGUID, "Accelerate.framework", true);
File.WriteAllText (projPath, proj.WriteToString ());
}

It's still looking for the `Unity-iPhone` target when it should be looking for `UnityFramework` instead for Unity 2019.3.

I can submit a pull request with a quick workaround for the issue like the following, just let me know if I'm in the right direction. Also, I don't have much knowledge on this repo source code, so there could be better solutions than this one.

**PBXProject.cs:**
```c#
        /// <summary>
        /// Returns the default main target name in Unity project.
        /// The returned target name can then be used to retrieve the GUID of the target via TargetGuidByName
        /// function. This function can only be used in Unity-generated projects.
        /// </summary>
        /// <returns>The default main target name.</returns>
        public static string GetUnityTargetName()
        {
#if UNITY_2019_3_OR_NEWER
            return "UnityFramework";
#else
            return "Unity-iPhone";
#endif
        }

FixupFiles.cs:
c# public static void AddBuildFlag(string path) { string projPath = Path.Combine(path, Path.Combine("Unity-iPhone.xcodeproj", "project.pbxproj")); PBXProject proj = new PBXProject(); proj.ReadFromString(File.ReadAllText(projPath)); string targetGUID = proj.TargetGuidByName(GetUnityTargetName()); proj.AddBuildProperty(targetGUID, "GCC_PREPROCESSOR_DEFINITIONS", " $(inherited) FBSDKCOCOAPODS=1"); proj.AddBuildProperty(targetGUID, "OTHER_LDFLAGS", "-ObjC"); proj.AddFrameworkToProject(targetGUID, "Accelerate.framework", true); File.WriteAllText(projPath, proj.WriteToString()); }

Я боролся со смежной проблемой на 2019.3, она строится, но не запускается. Буду признателен за любое руководство. Проблема очень похожа на OP, поэтому я не уверен, что она требует отдельной проблемы.

@felippeduran Попробовал исправить и

2020-04-15 03:25:54.105800+0300 offroad3[35344:6034574] Error loading /var/containers/Bundle/Application/FE59C147-7622-42CD-BE51-39AA849780D6/offroad3.app/Frameworks/UnityFramework.framework/UnityFramework: dlopen(/var/containers/Bundle/Application/FE59C147-7622-42CD-BE51-39AA849780D6/offroad3.app/Frameworks/UnityFramework.framework/UnityFramework, 265): Library not loaded: @rpath/FBSDKCoreKit.framework/FBSDKCoreKit Referenced from: /private/var/containers/Bundle/Application/FE59C147-7622-42CD-BE51-39AA849780D6/offroad3.app/Frameworks/UnityFramework.framework/UnityFramework Reason: image not found 2020-04-15 03:25:54.268034+0300 offroad3[35344:6034574] Error loading /var/containers/Bundle/Application/FE59C147-7622-42CD-BE51-39AA849780D6/offroad3.app/Frameworks/UnityFramework.framework/UnityFramework: dlopen(/var/containers/Bundle/Application/FE59C147-7622-42CD-BE51-39AA849780D6/offroad3.app/Frameworks/UnityFramework.framework/UnityFramework, 265): Library not loaded: @rpath/FBSDKCoreKit.framework/FBSDKCoreKit Referenced from: /private/var/containers/Bundle/Application/FE59C147-7622-42CD-BE51-39AA849780D6/offroad3.app/Frameworks/UnityFramework.framework/UnityFramework Reason: image not found

РЕДАКТИРОВАТЬ:

Оказалось, что это проблема с рекламным посредником, интегрирующим Facebook Audience Network, а не с Facebook Unity SDK. Если у вас есть аналогичный результат для меня, это был плагин посредничества Appodeal. В противном случае не обращайте внимания на этот комментарий.

РЕДАКТИРОВАТЬ 2:

В будущем для справки по поиску в Google, поскольку я не смог найти эту конкретную проблему, решение моей проблемы состояло в том, чтобы просто напрямую добавить фреймворки в раздел Embed Frameworks на этапах сборки целевой Unity-iPhone.

@aVolnov , тогда предложенное мной исправление сработало?

@felippeduran Я не совсем уверен, так как моя проблема оказалась совсем другим зверьком.

@flamepygmy ты только что спас мне жизнь. Потеряли на это столько часов :(

да, конвейер Unity iOS действительно подвержен ошибкам ... Так много частей, которые должны работать вместе, совершенно непредсказуемо, если какое-либо обновление пакета что-то сломает.

Комментирование предложения @ flo-wolf также устранило эту проблему для меня в 2019.3.9f1.

Однако я решил полностью удалить cocoapods и переустановить его, чтобы это была новая установка. Я также закрыл Unity в процессе, чтобы убедиться, что он был правильно установлен через Play Services Resolver.

Я использовал старые установки cocoapods в старых проектах. Я не уверен, что изменилось за последний год, чтобы сделать так, чтобы новая установка была лучшим подходом - простое обновление локальной установки cocoapods через терминал тоже может сработать, но я был в своем уме;).

Думаю, я просто понял, в чем проблема. Я создавал проект Unity из файла проекта, тогда как с cocoapods вам нужно открыть проект в xcode из файла рабочей области, поскольку он включает проект единства И проект cocoapods. Никогда раньше не создавал ничего из файла рабочего пространства с помощью Unity. Виноват. @flamepygmy

Это сработало для меня. Спасибо!

Откройте и создайте Unity-iPhone.xcworkspace вместо Unity-iPhone.xcodeproj

Мне все еще не удалось создать рабочую сборку с Unity 2019.3.
Эти исправления уже были отправлены по запросу, и есть ли какие-то оценки для выпуска? Unity 2019.3 был выпущен 28 января, прошло около 6 месяцев, а Facebook SDK все еще не был совместим с ним.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги

Смежные вопросы

laijingfeng picture laijingfeng  ·  6Комментарии

pvalium picture pvalium  ·  6Комментарии

michelleran picture michelleran  ·  4Комментарии

Shaitan1805 picture Shaitan1805  ·  6Комментарии

manofspirit picture manofspirit  ·  6Комментарии