Опишите здесь свою среду разработки, предоставив как можно больше подробностей. Если они у вас есть, обязательно включите:
2019.3.6f1
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)
Проверить ошибки
У меня точно такая же проблема.
Единство: 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 все еще не был совместим с ним.
Самый полезный комментарий
Я была такая же проблема. Хотя независимо от того, что я установил для своего поколения cocoapod в Unity Play Services Resolver, .xcworkspace не создавался.
Как я это исправил:
откройте терминал в корневой папке вашего проекта и запустите
pod install
это создало файл .xcworkspace. После его открытия, добавления информации для подписи и т. Д., Как обычно, а затем его создания, он, наконец, сработал.