Ausgabe
- Unity-Version: 2020.3.25f1
- XCode-Version: 13.2.1
- Unity FB SDK: Migration von 11.+ auf 14.0.0
Nachdem ich mich der Aktualisierung des Facebook Unity SDK aufgrund von in 13.2 eingeführten Editor-/IDE-bezogenen Problemen widersetzt hatte, arbeitete ich an der Aktualisierung auf Unity Facebook SDK Version 14.0.0. Nachdem ich die Standardprobleme behoben hatte, um den FB-Updates zu entsprechen (einschließlich Client-Token speziell in den FB-Einstellungen und Einstellen der DLLs auf die richtige Build-Architektur), konnte ich Webgl und Android ohne Probleme erstellen, bin aber auf einen iOS-Build gestoßen scheitern.
Undefined symbols for architecture arm64:
"_OBJC_CLASS_$_ACAccountStore", referenced from:
objc-class-ref in Util.o
"_ACFacebookAppIdKey", referenced from:
_Util_getNativeFBPermissionStatus in Util.o
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Wenn ich die verschiedenen anderen Probleme durchlese, die auf ähnliche undefinierte Symbole für Architektur-Blah treffen, denke ich, dass mir entweder etwas in meinen Linker-Einstellungen fehlt oder möglicherweise ein Framework fehlt, auf das ich verweisen muss. Ursprünglich hatte ich angenommen, dass während der Archivierung etwas passiert, aber der gleiche Fehler wird angezeigt, wenn ich nur versuche, das xcode-Projekt zu erstellen. Die Pod-Datei wird erfolgreich erstellt und ohne Probleme aufgelöst, sodass der xcode-Arbeitsbereich erstellt wird.
BEARBEITEN: Um ein wenig mehr Informationen hinzuzufügen, hatte ich bereits die vorgeschlagene Lösung für die DLL-Importeinstellungen durchgeführt.
Lösung
Nachdem ich einige Beiträge von einem Ingenieur erhalten hatte, der in der Vergangenheit an diesem Projekt gearbeitet hatte, konnte ich feststellen, dass das fehlende Symbol mit einem alten FB-Code zusammenhängt, der nicht mehr unterstützt wird und von unserer App nicht mehr verwendet wird. Aus diesem Grund war es uns möglich, den alten Code sauber zu entfernen und das Build-Problem zu lösen. Die Dinge schienen wie beabsichtigt zu funktionieren. Für die Sichtbarkeit hatten wir eine interne Klasse, die einige externe Methoden verwendete, um eine Brücke zwischen unserem App-Code und dem nativen Code der Plattform zu schlagen. iOS hatte eine Methode getNativeFBPermissionStatus
, die Teil einer Util.m-Klasse war.
Beantwortet von – user13274705
Antwort geprüft von – David Marino (FixError Volunteer)