Facebook-sdk-for-unity: Unity 2019.3 - bibliothèque introuvable pour -lFBSDKCoreKit

Créé le 24 mars 2020  ·  16Commentaires  ·  Source: facebook/facebook-sdk-for-unity

Liste de contrôle

Environnement

Décrivez votre environnement de développement ici, en donnant autant de détails que possible. Si vous en avez, assurez-vous d'inclure :

  • Version de l'éditeur Unity : 2019.3.6f1
  • Version du SDK Unity : 7.19.1
  • Plate-forme d'installation et version : iOS version 10+ XCode 11.3.1'

Buts

Construire pour iOS à l'aide de Unity 2019.3

Résultats attendus

Construction réussie

Résultats actuels

La compilation échoue car la bibliothèque -lFBSDKCoreKit est introuvable.
D'autres problèmes sont fermés mais ne sont pas résolus sur Facebook SDK 7.19+ :

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

Étapes pour reproduire

Créer un nouveau projet dans l'unité
Installer le package SDK FB (7.19.1)
Projet Build Unity (2019.3.6f1)
Essayez de construire un projet Xcode sur Xcode ( version 11.3.1)
Vérifier les erreurs

bug

Commentaire le plus utile

J'ai eu le même problème. Bien que peu importe ce que j'ai défini pour ma génération de cocopodes dans Unity Play Services Resolver, le .xcworkspace n'a pas été créé.

Comment je l'ai réparé :
ouvrez le terminal dans le dossier racine de votre projet et exécutez
pod install
cela a créé le fichier .xcworkspace. Après l'avoir ouvert, ajouté des informations de signature, etc. comme d'habitude, puis construit, cela a finalement fonctionné.

Tous les 16 commentaires

J'ai exactement le même problème.
Unité : 2019.3.6f1
SDK FB : (7.19.1)
XCode : 11.3.1

Exactement le même problème.
Unité : 2018.4.5f1 (LTS)
SDK FB : 7.19.1
XCode : 11.3.1

Je pense que je viens de comprendre quel était le problème. Je construisais le projet Unity à partir du fichier de projet, alors qu'avec Cocopods, vous devez ouvrir le projet dans xcode à partir du fichier de l' espace de travail car il comprend le projet Unity ET le projet Cocopods. Jamais rien construit à partir du fichier de l'espace de travail auparavant avec Unity. Ma faute.

@flamepygmy
Cela a également résolu le problème pour moi. :-)
Je ne connais pas du tout XCode, mais j'imagine qu'un espace de travail est comparable à une solution Visual Studio. Jusqu'à présent, je venais toujours de double-cliquer sur le fichier .xcodeproj.

J'ai eu le même problème. Bien que peu importe ce que j'ai défini pour ma génération de cocopodes dans Unity Play Services Resolver, le .xcworkspace n'a pas été créé.

Comment je l'ai réparé :
ouvrez le terminal dans le dossier racine de votre projet et exécutez
pod install
cela a créé le fichier .xcworkspace. Après l'avoir ouvert, ajouté des informations de signature, etc. comme d'habitude, puis construit, cela a finalement fonctionné.

Je migre actuellement mon jeu régulier vers 2019.3 également et je suis confronté au même problème.

Cela semble être un problème où FBSDKCOCOAPODS=1 est inclus en tant que macro de préprocesseur de la cible principale ( Unity-iPhone ) au lieu de UnityFramework , qui est celui ciblé par IOSResolver et inclut tout le code source exporté lors de la création de l'espace de travail XCode.

Sans cette macro, FBSDKCoreKitImport.h finira par pointer vers la mauvaise inclusion/importation :

#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

En regardant dans le code source du SDK Facebook, je pense que le problème est dans le FixupFiles.cs :
```c#
public static void AddBuildFlag (chemin de chaîne)
{
string projPath = Path.Combine(path, Path.Combine("Unity-iPhone.xcodeproj", "project.pbxproj"));
PBXProject proj = nouveau PBXProject ();
proj.ReadFromString(File.ReadAllText(projPath));
string targetGUID = proj.TargetGuidByName("Unity-iPhone");
proj.AddBuildProperty(targetGUID, "GCC_PREPROCESSOR_DEFINITIONS", " $(hérité) 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()); }

J'ai lutté avec un problème adjacent sur 2019.3, il se construit mais ne fonctionne pas. Apprécierait toute orientation. Problème très similaire aux OP, donc je ne suis pas sûr que cela justifie un problème distinct.

@felippeduran J'ai essayé votre correctif et créé les DLL du SDK à partir de la source, en obtenant toujours la même erreur que j'obtenais auparavant :

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

ÉDITER:

Cela s'est avéré être un problème avec un médiateur publicitaire intégrant Facebook Audience Network, et non le SDK Facebook Unity. Si vous avez une sortie similaire à moi, c'est le plugin de médiation Appodeal à l'origine de cela. Sinon, merci de ne pas tenir compte de ce commentaire.

EDIT 2:

Pour référence future sur Google, puisque je n'ai pas pu trouver ce problème spécifique, la solution à mon problème consistait simplement à ajouter directement les frameworks à la section Intégrer les frameworks des phases de construction de la cible Unity-iPhone.

@aVolnov , mon correctif suggéré a-t-il fonctionné pour vous alors?

@felippeduran Je ne suis pas vraiment sûr puisque mon problème s'est avéré être une bête complètement différente.

@flamepygmy tu viens de me sauver la vie. J'ai perdu tant d'heures à ce sujet :(

oui, le pipeline Unity iOS est vraiment sujet aux erreurs... Autant de pièces qui doivent fonctionner ensemble, complètement imprévisibles si une mise à jour de package casse quelque chose.

Commenter la suggestion de @flo-wolf a également résolu ce problème pour moi sur 2019.3.9f1.

Cependant, la façon dont j'ai procédé était de désinstaller complètement Cocopods et de le réinstaller pour qu'il s'agisse d'une nouvelle installation. J'ai également fermé Unity au cours du processus pour m'assurer qu'il était correctement installé via Play Services Resolver.

J'avais utilisé d'anciennes installations de Cocopods sur des projets plus anciens. Je ne sais pas ce qui a changé au cours de la dernière année pour qu'une nouvelle installation soit la meilleure approche - la simple mise à niveau de l'installation locale des cocopodes via un terminal peut également fonctionner, mais j'étais à bout de nerfs ;).

Je pense que je viens de comprendre quel était le problème. Je construisais le projet Unity à partir du fichier de projet, alors qu'avec Cocopods, vous devez ouvrir le projet dans xcode à partir du fichier d'espace de travail car il inclut le projet Unity ET le projet Cocopods. Jamais rien construit à partir du fichier de l'espace de travail auparavant avec Unity. Ma faute. @flamepygmy

Cela a fonctionné pour moi. Merci!

Ouvrez et construisez Unity-iPhone.xcworkspace au lieu de Unity-iPhone.xcodeproj

Je n'étais toujours pas en mesure de générer une version de travail avec Unity 2019.3.
Ces correctifs ont déjà été envoyés par "pull request" et y a-t-il des estimations de publication ? Unity 2019.3 est sorti le 28 janvier, cela fait environ 6 mois et le SDK Facebook n'était toujours pas compatible avec celui-ci.

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

Shaitan1805 picture Shaitan1805  ·  6Commentaires

pvalium picture pvalium  ·  6Commentaires

derwaldgeist picture derwaldgeist  ·  4Commentaires

charanjeet5ingh picture charanjeet5ingh  ·  6Commentaires

alchemyincarnate picture alchemyincarnate  ·  4Commentaires