Das Portieren von Apps auf einen Mac ist dank Catalyst endlich möglich . Das Problem ist, dass zahlreiche Pods AppKit nicht unterstützen. Am häufigsten wäre Crashlytics / Firebase.
In [...]/Pods/Crashlytics/iOS/Crashlytics.framework/Crashlytics(CLSInternalReport.o), building for Mac Catalyst, but linking in object file built for iOS Simulator, file '[...]/Pods/Crashlytics/iOS/Crashlytics.framework/Crashlytics' for architecture x86_64
Da es sich um ein aktuelles Thema handelt, konnte ich kein Dokument zum Entfernen eines Pods aus meinem Build für MacOS finden, aber für iOS und iPadO S behalten .
Es ist möglich, im Code zu verwenden:
#if !targetEnvironment(macCatalyst)
// Code to exclude for your macOS app
#endif
Aber dieser eine Teil des Problems, der andere Teil ist, den Pod nur für iOS zu verknüpfen ...
Was wäre die einfachste / beste Vorgehensweise, wenn die Bibliothek für macOS nicht wichtig ist, aber unter iOS immer noch gewünscht wird?
if target.name.start_with?("Pods")
, um alle Pod-Ziele zu erfassen.if [[ ${IS_MACCATALYST} != "YES" ]]; then "${PODS_ROOT}/Fabric/run" fi
Öffnen Sie die Datei Pods- $ projectname.release.xcconfig im Pods-Verzeichnis Ihres Projekts und suchen Sie die Zeile OTHER_LDFLAGS. Fügen Sie
[sdk=iphone*]
unmittelbar nach dem Variablennamen hinzu (als Beispiel sieht mein Name jetzt so aus):Dadurch werden die Verknüpfungsoptionen nur beim Erstellen von iPhone-Varianten unter bestimmten Bedingungen festgelegt, sodass der Pod nicht unter OSX verknüpft werden kann. Natürlich , wie Sie diese Bedürfnisse erwähnen, mit kombiniert werden
#if !targetEnvironment(macCatalyst)
und#endif
den Code rund um die Schote Aufruf oder Sie Linker Fehler erhalten.Dadurch konnte ich das gleiche Problem überwinden. (Und falls Sie sich fragen, welche anderen coolen Dinge neben bedingten Variablen Sie Ihren .xcconfig-Dateien hinzufügen können, habe ich folgende Referenz gefunden: https://pewpewthespells.com/blog/xcconfig_guide.html )
quelle
pod install
. Ich würde empfehlen, die Antwort von Fernando Moya de Rivas für die beste Alternative zu lesenMit den Cocoapods 1.8.4 musste ich die hervorragende Antwort von @ AncAinu wie folgt anpassen:
quelle
[]
Ich habe eine aktualisierte Lösung, die für mich mit den folgenden Google-Pods funktioniert:
quelle
ld: in /Users/<name>/source/<app>/Pods/Fabric/iOS/Fabric.framework/Fabric(Fabric.o), building for Mac Catalyst, but linking in object file built for iOS Simulator, for architecture x86_64
Ich verwende genau das, was Sie oben haben, abzüglich desGoogleMobileAds
undGoogle-Mobile-Ads-SDK
. Warum bekomme ich das?Um den besten Ansatz für den Umgang mit nicht unterstützten Framweorks für Catalyst zu finden, sollten Sie die Lösung von Fernando Moya de Ri lesen .
Er sagte im Grunde, Sie müssen nur ein Array aller Bibliotheken definieren, die Sie nicht auf Mac OSX installieren möchten, wie folgt :
['Fabric', 'Crashlytics', 'Firebase/Core', ...]
.Dann kann Ihre Pod-Datei so einfach aussehen:
quelle