Facebook-sdk-for-unity: Unity 2019.3 - Bibliothek für -lFBSDKCoreKit nicht gefunden

Erstellt am 24. März 2020  ·  16Kommentare  ·  Quelle: facebook/facebook-sdk-for-unity

Checkliste

Umgebung

Beschreiben Sie hier Ihre Entwicklungsumgebung und geben Sie so viele Details wie möglich an. Wenn Sie sie haben, stellen Sie sicher, dass Sie Folgendes angeben:

  • Unity-Editor-Version: 2019.3.6f1
  • Unity SDK-Version: 7.19.1
  • Installationsplattform & Version: iOS Version 10+ XCode 11.3.1'

Tore

Build für iOS mit Unity 2019.3

erwartete Ergebnisse

Erfolgreicher Build

Tatsächliche Ergebnisse

Die Kompilierung schlägt fehl, weil die Bibliothek -lFBSDKCoreKit nicht gefunden wird.
Andere Probleme sind geschlossen, aber nicht auf Facebook SDK 7.19+ behoben:

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

Schritte zum Reproduzieren

Erstellen Sie ein neues Projekt in Einheit
FB SDK-Paket installieren (7.19.1)
Unity-Projekt erstellen (2019.3.6f1)
Versuchen Sie, ein Xcode-Projekt auf Xcode zu erstellen (Version 11.3.1)
Fehler prüfen

bug

Hilfreichster Kommentar

Ich hatte das gleiche Problem. Obwohl ich meine Cocoapod-Generierung in Unity Play Services Resolver eingestellt habe, wurde der .xcworkspace nicht erstellt.

Wie ich es behoben habe:
Öffnen Sie das Terminal im Stammordner Ihres Projekts und führen Sie es aus
pod install
Dadurch wurde die .xcworkspace-Datei erstellt. Nach dem Öffnen, dem Hinzufügen von Signaturinformationen usw. wie gewohnt und dem anschließenden Erstellen funktionierte es endlich.

Alle 16 Kommentare

Ich habe genau das gleiche Problem.
Einheit: 2019.3.6f1
FB-SDK: (7.19.1)
XCode: 11.3.1

Genau das gleiche Problem.
Einheit: 2018.4.5f1 (LTS)
FB-SDK: 7.19.1
XCode: 11.3.1

Ich glaube, ich habe gerade herausgefunden, was das Problem ist. Ich habe das Unity-Projekt aus der Projektdatei erstellt, während Sie bei Cocoapods das Projekt in xcode aus der Arbeitsbereichsdatei öffnen müssen, da es das Unity-Projekt UND das Cocoapods-Projekt enthält. Mit Unity habe ich noch nie etwas aus der Arbeitsbereichsdatei erstellt. Mein Fehler.

@ Flamepygmy
Das hat das Problem auch für mich gelöst. :-)
Ich bin mit XCode überhaupt nicht vertraut, aber ich denke, ein Arbeitsbereich ist mit einer Visual Studio-Lösung vergleichbar. Bisher hatte ich immer nur einen Doppelklick auf die .xcodeproj-Datei gemacht.

Ich hatte das gleiche Problem. Obwohl ich meine Cocoapod-Generierung in Unity Play Services Resolver eingestellt habe, wurde der .xcworkspace nicht erstellt.

Wie ich es behoben habe:
Öffnen Sie das Terminal im Stammordner Ihres Projekts und führen Sie es aus
pod install
Dadurch wurde die .xcworkspace-Datei erstellt. Nach dem Öffnen, dem Hinzufügen von Signaturinformationen usw. wie gewohnt und dem anschließenden Erstellen funktionierte es endlich.

Ich migriere derzeit auch mein reguläres Spiel auf 2019.3 und stehe vor dem gleichen Problem.

Dies scheint ein Problem zu sein, bei dem FBSDKCOCOAPODS=1 als Präprozessor-Makro des Hauptziels ( Unity-iPhone ) anstelle von UnityFramework eingefügt wird, das von

Ohne dieses Makro zeigt FBSDKCoreKitImport.h am Ende auf das falsche Include/Import:

#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

Wenn man sich den Quellcode des Facebook SDK ansieht , denke ich, dass das Problem in der
```c#
public static void AddBuildFlag(string path)
{
string projPath = Path.Combine(path, Path.Combine("Unity-iPhone.xcodeproj", "project.pbxproj"));
PBXProject-Projekt = neues PBXProject();
proj.ReadFromString(File.ReadAllText(projPath));
string targetGUID = proj.TargetGuidByName("Unity-iPhone");
proj.AddBuildProperty(targetGUID, "GCC_PREPROCESSOR_DEFINITIONS", " $(vererbt) 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()); }

Ich habe in 2019.3 mit einem angrenzenden Problem gerungen, es wird gebaut, aber nicht ausgeführt. Wäre für jede Anleitung dankbar. Sehr ähnliches Problem wie bei OPs, daher bin ich mir nicht sicher, ob es ein separates Problem rechtfertigt.

@felippeduran Habe Ihren Fix angezeigt wurde:

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

BEARBEITEN:

Es stellte sich heraus, dass dies ein Problem mit einem Werbevermittler war, der das Facebook Audience Network integriert, und nicht mit dem Facebook Unity SDK. Wenn Sie eine ähnliche Ausgabe wie ich haben, war es das Appodeal-Mediations-Plugin, das dies verursacht hat. Ansonsten bitte diesen Kommentar ignorieren.

BEARBEITEN 2:

Für zukünftige Google-Referenzen, da ich dieses spezielle Problem nicht finden konnte, bestand die Lösung für mein Problem darin, die Frameworks einfach direkt zum Abschnitt Embed Frameworks der Build-Phasen des Unity-iPhone-Ziels hinzuzufügen.

@aVolnov , hat mein

@felippeduran Ich bin mir nicht sicher, da sich mein Problem als ein ganz anderes Tier herausgestellt hat.

@flamepygmy du

Ja, die Unity iOS-Pipeline ist wirklich fehleranfällig ... So viele Teile, die zusammenarbeiten müssen, völlig unvorhersehbar, wenn ein Paket-Update irgendetwas kaputt macht.

Das Kommentieren des Vorschlags von @ flo-wolf hat dieses Problem auch für mich am 2019.3.9f1 behoben.

Ich habe Cocoapods jedoch vollständig deinstalliert und neu installiert, sodass es sich um eine Neuinstallation handelt. Ich habe dabei auch Unity geschlossen, um sicherzustellen, dass es sauber über den Play Services Resolver installiert wurde.

Ich hatte alte Cocoapods-Installationen für ältere Projekte verwendet. Ich bin mir nicht sicher, was sich im letzten Jahr geändert hat, damit eine Neuinstallation der beste Ansatz war - nur ein Upgrade der lokalen Cocoapods-Installation über das Terminal könnte auch funktionieren, aber ich war am Ende meiner Weisheit ;).

Ich glaube, ich habe gerade herausgefunden, was das Problem ist. Ich habe das Unity-Projekt aus der Projektdatei erstellt, während Sie bei Cocopods das Projekt in xcode aus der Arbeitsbereichsdatei öffnen müssen, da es das Unity-Projekt UND das Cocoopods-Projekt enthält. Mit Unity habe ich noch nie etwas aus der Arbeitsbereichsdatei erstellt. Mein Fehler. @flamepygmy

Das hat bei mir funktioniert. Vielen Dank!

Öffnen und erstellen Sie Unity-iPhone.xcworkspace anstelle von Unity-iPhone.xcodeproj

Ich konnte mit Unity 2019.3 immer noch keinen funktionierenden Build generieren.
Diese Fixes wurden bereits per "Pull Request" verschickt und gibt es einige Schätzungen für die Veröffentlichung? Unity 2019.3 wurde am 28. Januar veröffentlicht, es ist ungefähr 6 Monate her und das Facebook SDK wurde immer noch nicht damit kompatibel gemacht.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen