Der Versuch, ein großes (und an Xcode 11!) Projektgebäude in Xcode 12 (Beta 5) zur Vorbereitung auf iOS 14 zu erstellen. Codebase war zuvor Obj-C, enthält jetzt jedoch sowohl Obj-C als auch Swift und verwendet Pods Obj-C und / oder Swift ebenfalls.
Ich habe die neue Beta von Cocoapods mit Xcode 12-Unterstützung (derzeit 1.10.0.beta 2) gezogen.
Die Pod-Installation ist erfolgreich. Wenn ich einen Build mache, wird auf einem Pod-Framework der folgende Fehler angezeigt:
"Erstellen für iOS Simulator, aber Verknüpfen in einer für iOS erstellten Objektdatei für Architektur arm64"
Wenn ich lipo -info auf dem Framework ausführe, hat es: armv7s armv7 i386 x86_64 arm64.
Zuvor waren für das Projekt gültige Architekturen auf armv7, armv7s und arm64 festgelegt.
In Xcode 12 verschwindet diese Einstellung gemäß der Dokumentation von Apple. Architekturen sind auf $ (ARCHS_STANDARD) festgelegt. Ich habe nichts in ausgeschlossenen Architekturen festgelegt.
Hat jemand eine Idee, was hier los sein könnte? Ich konnte dies mit einem einfacheren Projekt noch nicht reproduzieren.
quelle
building for iOS Simulator, but linking in object file built for macOS, for architecture x86_64
Antworten:
Grundsätzlich müssen Sie
arm64
für die Simulatorarchitektur sowohl Ihr Projekt als auch das Pod-Projekt ausschließen.Um das zu tun, Navigieren Sie zu Einstellungen beim Aufbau Ihres Projektes und fügen Sie
Any iOS Simulator SDK
mit dem Wert imarm64
InnernExcluded Architecture
.ODER
XCConfig
Dateien verwenden, können Sie diese Zeile einfach hinzufügen, um die Simulatorarchitektur auszuschließen.Dann
Sie müssen dasselbe für das Pod-Projekt tun, bis alle Anbieter von Kakaopads die folgenden Informationen in ihrer Podspec hinzugefügt haben .
s.pod_target_xcconfig = { 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'arm64' } s.user_target_xcconfig = { 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'arm64' }
Sie können
Excluded Architechure
die Build-Einstellungen Ihres Pod-Projekts manuell hinzufügen , sie werden jedoch bei Verwendung überschriebenpod install
.Stattdessen können Sie dieses Snippet in Ihr hinzufügen
Podfile
. Bei jeder Ausführung werden die erforderlichen Build-Einstellungen geschriebenpod install
post_install do |installer| installer.pods_project.build_configurations.each do |config| config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = "arm64" end end
quelle
[sdk=iphonesimulator*]
AfterEXCLUDED_ARCHS
nicht findet, da keiner der Pods für arm64 erstellt wird.post_install do |installer|
in den meisten Podfiles aufgrund von Flipper bereits einen Abschnitt gibt . Fügen Sie den inneren Bereichinstaller.pods_project.build_configurations.each do |config| config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = "arm64" end
hinter derflipper_post_install(installer)
Linie ein.building for iOS Simulator, but linking in object file built for macOS, for architecture x86_64
. Wie man es repariert?TL; DR;
Setzen Sie "Nur aktive Architektur erstellen (
ONLY_ACTIVE_ARCH
)" für Ihre Bibliotheken / Apps auf " Ja " , auch für den Release- Modus.Beim Versuch, die Hauptursache des Problems zu identifizieren, wurden mir einige interessante Fakten über Xcode 12 klar.
Xcode 12 ist eigentlich das Sprungbrett für Apple Silicon, das leider noch nicht verfügbar ist. Aber mit dieser Plattform werden wir arm64-basiertes MacOS bekommen, wo Simulatoren im Gegensatz zur gegenwärtigen Intel-basierten x86_64-Architektur auch auf arm64-Architektur laufen.
Xcode hängt normalerweise vom "Ausführungsziel" ab, um seine Bibliotheken / Apps zu erstellen. Wenn also ein Simulator als "Ausführungsziel" ausgewählt wird, wird die App für verfügbare Simulatorarchitekturen erstellt, und wenn ein Gerät als "Ausführungsziel" ausgewählt wird, wird die für das Gerät unterstützte Architektur erstellt (
arm*
).xcodebuild
wird im Xcode 12+ Build-Systemarm64
als gültige Architektur für den Simulator betrachtet. Wenn also ein Simulator als Ausführungsziel ausgewählt wird, kann er möglicherweise versuchen, Ihre Bibliotheken / Apps auch mitarm64
basierten Simulatoren zu kompilieren / zu verknüpfen (noch nicht verfügbar). Es sendetclang(++)
also ein Zielflag wiearm64-apple-ios13.0-simulator
im Format <Architektur> - <os> - <sdk> - <Plattform> und Clang versucht, einen arm64-basierten Simulator zu erstellen / zu verknüpfen, der schließlich auf einem Intel-basierten Mac fehlschlägt.Aber
xcodebuild
versucht , dies nur für Veröffentlichung baut. Warum? Da die Build-ONLY_ACTIVE_ARCH
Einstellungen für " Nur aktive Architektur erstellen ( )" normalerweise nur für die Konfiguration "Release" auf "Nein" gesetzt sind. Das bedeutet,xcodebuild
dass versucht wird, alle Architekturvarianten Ihrer Bibliotheken / Apps für das ausgewählte Ausführungsziel für Release-Builds zu erstellen. Und für das Simulator-Ausführungsziel wird es beides enthaltenx86_64
undarm64
jetzt, daarm64
in Xcode 12+ auch eine Architektur für Simulatoren zur Unterstützung von Apple Silicon unterstützt wird.Einfach ausgedrückt, Xcode kann Ihre App nicht jedes Mal erstellen, wenn es die Befehlszeile versucht
xcodebuild
(standardmäßig wird Build veröffentlicht, siehe die allgemeine Registerkarte Ihrer Projekteinstellung) oder auf andere Weise im Release- Modus. Eine einfache Problemumgehung für dieses Problem besteht darin, "Nur aktive Architektur erstellen (ONLY_ACTIVE_ARCH
)" in Ihren Bibliotheken / Apps auf " Ja " zu setzen , auch für den Release-Modus.Wenn die Bibliotheken als Pods enthalten sind und Sie Zugriff darauf haben
.podspec
, können Sie einfach Folgendes festlegen:Ich persönlich mag die zweite Zeile nicht, da Pods das Zielprojekt nicht verschmutzen sollten und es in den Zieleinstellungen selbst überschrieben werden könnte. Es sollte also in der Verantwortung des Verbraucherprojekts liegen, die Einstellung auf irgendeine Weise außer Kraft zu setzen. Dies kann jedoch für ein erfolgreiches Flusen von Podspecs erforderlich sein.
Wenn Sie jedoch keinen Zugriff auf die haben
.podspec
, können Sie die Einstellungen während der Installation der Pods jederzeit aktualisieren:post_install do |installer| installer.pods_project.targets.each do |target| target.build_configurations.each do |config| config.build_settings["ONLY_ACTIVE_ARCH"] = "YES" end end end
Ich war besorgt darüber, welche Auswirkungen dies haben wird, wenn wir die Bibliotheken / Apps tatsächlich archivieren. Während der Archivierung nehmen Apps normalerweise die "Release" -Konfiguration an. Da hierdurch ein Release-Build erstellt wird, der nur die aktive Architektur des aktuellen Ausführungsziels berücksichtigt, verlieren wir bei diesem Ansatz möglicherweise die Slices für armv7, armv7s usw. aus dem Ziel-Build. Ich habe jedoch festgestellt, dass in der Dokumentation (im beigefügten Bild hervorgehoben) angegeben ist, dass diese Einstellung ignoriert wird, wenn "Generisches iOS-Gerät / Beliebiges Gerät" als Ausführungsziel ausgewählt wird, da keine bestimmte Architektur definiert wird. Ich denke, wir sollten gut sein, wenn wir unsere App archivieren und dies als Laufziel auswählen.
quelle
user_target_xcconfig
und die Werte nicht genau übereinstimmen, gibt CocoaPods Warnungen wie diese aus.[!] Can't merge user_target_xcconfig for pod targets: [... list of pods ...]. Singular build setting EXCLUDED_ARCHS[sdk=<...>] has different values.
Die Podspec-Syntaxreferenz besagt, dass dieses Attribut "nicht empfohlen" wird. Guides.cocoapods.org/syntax/podspec.html#user_target_xcconfig . Verwenden Sie dies also nichtuser_target_xcconfig
, um vielen Entwicklern die Mühe zu ersparen.Eine Lösung gefunden! https://developer.apple.com/forums/thread/657913
Wenn Sie ausgeschlossene Architekturen für den Simulator auf arm64 setzen, wird er kompiliert.
quelle
Xcode 12, Beta 6
Die Build-Einstellung "Gültige Architekturen" wurde in Xcode 12 entfernt. Wenn Sie Werte in dieser Build-Einstellung hatten, verursachen diese ein Problem und müssen entfernt werden.
Ich konnte die Build-Einstellung VALID_ARCHS "löschen", indem ich sie wieder als benutzerdefinierte Build-Einstellung (ohne Werte) hinzufügte, das Projekt ausführte (was fehlgeschlagen ist) und dann die Build-Einstellung VALID_ARCHS löschte. Danach konnte ich auf dem Simulator laufen.
Die Build-Einstellung "Meine Architekturen" lautet "Standardarchitekturen".
Sie können eine benutzerdefinierte Einstellung über die Plus-Schaltfläche in den Build-Einstellungen hinzufügen:
quelle
Wenn Sie in Xcode 12 Probleme mit Simulatoren haben, die kein echtes Gerät sind, müssen Sie die VALID_ARCHS- Einstellungen entfernen , da dies nicht mehr unterstützt wird. Gehen Sie zu "Einstellungen erstellen ", suchen Sie nach " VALID_ARCHS " und entfernen Sie die benutzerdefinierten Eigenschaften. Mach es in jedem Ziel, das du hast.
Möglicherweise müssen Sie jedoch unten in Ihrer Poddatei ein Skript hinzufügen, damit Pods mit der richtigen Architektur und dem richtigen Bereitstellungsziel kompiliert werden:
post_install do |installer| installer.pods_project.targets.each do |target| target.build_configurations.each do |config| config.build_settings.delete 'IPHONEOS_DEPLOYMENT_TARGET' config.build_settings['ONLY_ACTIVE_ARCH'] = 'NO' end end end
quelle
VALID_ARCHS
aus meinem Projekt hat gut funktioniert. Ich habe weder an der Poddatei noch am Pods-Projekt etwas geändert.Nach dem Upgrade auf Xcode 12 konnte ich noch für ein echtes Gerät bauen, aber nicht für den Simulator. Der Podfile-Build funktionierte nur für das reale Gerät.
Ich habe VALID_ARCHS unter Build-Einstellungen> Benutzerdefiniert gelöscht und es hat funktioniert! Ich habe mir einige Zeit den Kopf geschlagen, bevor ich das gefunden habe.
quelle
Ich glaube, ich habe die Antwort gefunden. Gemäß den Versionshinweisen zu Xcode 12 Beta 6:
" Der Editor für Build-Einstellungen enthält nicht mehr die Build-Einstellung für gültige Architekturen (VALID_ARCHS), und von deren Verwendung wird abgeraten. Stattdessen gibt es eine neue Build-Einstellung für ausgeschlossene Architekturen (EXCLUDED_ARCHS). Wenn ein Projekt VALID_ARCHS enthält, wird die Einstellung im Benutzer angezeigt -Definierter Abschnitt des Build-Einstellungs-Editors. (15145028) "
Ich konnte dieses Problem beheben, indem ich die Projektdatei manuell bearbeitete (ich konnte nicht herausfinden, wie das Element mit Xcode aus der Projektdatei entfernt werden kann) und alle Zeilen entfernte, die auf VALID_ARCHS verweisen. Danach kann ich gut für den Simulator bauen.
quelle
Ich löse das Problem, indem ich "arm64" in "Ausgeschlossene Architekturen" sowohl für das Projektziel als auch für das Pod-Ziel hinzufüge.
Xcode -> Zielprojekt -> Build-Einstellung -> Ausgeschlossene Architekturen> "arm64"
Xcode -> Pod-Ziel -> Build-Einstellung -> Ausgeschlossene Architekturen> "arm64"
quelle
In Ihrer xxx.framework-Podspec-Datei add follow config vermeiden, dass das Pod-Paket arm64-Similator-Bögen enthält
s.pod_target_xcconfig = { 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'arm64' } s.user_target_xcconfig = { 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'arm64' }
quelle
user_target_xcconfig
und die Werte nicht genau übereinstimmen, gibt CocoaPods Warnungen wie diese aus.[!] Can't merge user_target_xcconfig for pod targets: [... list of pods ...]. Singular build setting EXCLUDED_ARCHS[sdk=<...>] has different values.
Die Podspec-Syntaxreferenz besagt, dass dieses Attribut "nicht empfohlen" wird. Guides.cocoapods.org/syntax/podspec.html#user_target_xcconfig . Verwenden Sie dies also nichtuser_target_xcconfig
, um vielen Entwicklern die Mühe zu ersparen.Xcode 12
Das Entfernen
VALID_ARCH
aus den Build-Einstellungen unter Benutzerdefinierte Gruppenarbeit für mich.quelle
Bei mir hat folgende Einstellung funktioniert:
Build-Einstellungen >> Ausgeschlossene Architekturen
"arm64" wurde sowohl zum Release- als auch zum Debug-Modus für die Option "Any iOS Simulator SDK" hinzugefügt.
quelle
Für Pod-Entwickler Fügen Sie in Ihrer Podspec Folgendes hinzu:
s.pod_target_xcconfig = { 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'arm64' } s.user_target_xcconfig = { 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'arm64' }
Dann in Ihrem Beispielprojekt
Sehen Sie, wie es in diesem Projekt funktioniert
quelle
user_target_xcconfig
und die Werte nicht genau übereinstimmen, gibt CocoaPods Warnungen wie diese aus.[!] Can't merge user_target_xcconfig for pod targets: [... list of pods ...]. Singular build setting EXCLUDED_ARCHS[sdk=<...>] has different values.
Die Podspec-Syntaxreferenz besagt, dass dieses Attribut "nicht empfohlen" wird. Guides.cocoapods.org/syntax/podspec.html#user_target_xcconfig . Verwenden Sie dies also nichtuser_target_xcconfig
, um vielen Entwicklern die Mühe zu ersparen.Ich hatte Probleme beim Erstellen von Frameworks über die Befehlszeile. Mein Framework hängt von anderen Frameworks ab, denen die Unterstützung für ARM-basierte Simulatoren fehlte. Am Ende habe ich die Unterstützung für ARM-basierte Simulatoren ausgeschlossen, bis ich meine Abhängigkeiten aktualisiert habe.
Ich brauchte das
EXCLUDED_ARCHS=arm64
Flag, um das Framework für Simulatoren aus der CLI zu erstellen.xcodebuild archive -project [project] -scheme [scheme] -destination "generic/platform=iOS Simulator" -archivePath "archives/[scheme]-iOS-Simulator" SKIP_INSTALL=NO BUILD_LIBRARY_FOR_DISTRIBUTION=YES EXCLUDED_ARCHS=arm64
quelle
-destination "generic/platform=iOS Simulator"
. Dies führt zum Erstellen aller verfügbaren Architekturen, einschließlich arm64 seit Xcode 12.Nachdem ich fast jeden Beitrag in diesem Thread ausprobiert und die Apple-Entwicklerforen durchgelesen hatte, stellte ich fest, dass nur eine Lösung für mich funktionierte.
Ich baue ein universelles Framework auf, das in einer schnellen App verwendet wird. Ich konnte ohne Architekturfehler nicht auf den Simulator bauen.
In meinem Framework-Projekt habe ich in meinen Erstellungsphasen eine Universal Framework-Aufgabe, falls dies bei Ihnen der Fall ist
xcodebuild
Aufgabe in der Erstellungsphase Folgendes hinzu :EXCLUDED_ARCHS="arm64"
Als nächstes müssen Sie das folgende Projekt ändern
Build Settings
:VALID_ARCHS
benutzerdefinierte EinstellungONLY_ACTIVE_ARCH
anYES
****** Wenn Sie ein Framework entwickeln und auch eine Demo-App haben, muss diese Einstellung in beiden Projekten aktiviert sein.
quelle
Updates: Okt 2020
Sie können einfach
arm64
nurDebug > Simulator - iOS 14.O SDK
unter Ausgeschlossene Architektur festlegen .quelle
Das Problem hierbei sind die gültigen Architekturen in Xcode 11, öffnen Sie das Projekt in Xcode 11 und ändern Sie den Wert für gültige Architekturen in $ (ARCHS_STANDARD) für Ihr Projekt, Ihr Ziel und Ihre Pods. Öffnen Sie das Projekt erneut in Xcode 12 und erstellen Sie es
quelle
Setzen Sie die
"Build Active Architecture Only"(ONLY_ACTIVE_ARCH)
Build-Einstellung auf yes undxcode
fragen Sie nach arm64, da die Silicon MAC-Architektur arm64 ist.arm64 wurde als Simulatorbogen in Xcode12 hinzugefügt, um Silicon MAC zu unterstützen.
quelle
In meinem Fall: Xcode 12
Ich setze leere Werte auf
EXCLUDED_ARCHS
und setzeONLY_ACTIVE_ARCH
Debug =YES
Release =NO
Build-Einstellung des Projektsund ich habe dies in mein Podfile aufgenommen:
post_install do |installer| installer.pods_project.targets.each do |target| target.build_configurations.each do |config| config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = "arm64" end end end
Es läuft auf meinem Simulator iPhone 8 (iOS 12) und iPhone 11 Pro Max (iOS 14) sowie auf meinem Gerät iPhone 7 Plus (iOS 13.4).
quelle
Bei der
Build Settings
SucheVALID_ARCH
drücken Sie danndelete
. Dies sollte bei mir mit Xcode 12.0.1 funktionierenquelle
VALID_ARCH
, was ist das?Nur
Any iOS Simulator SDK -> x86_64
zuProject's Build Settings -> VALID_ARCHS
Arbeiten für mich hinzufügen .Xcode-Version: 12.1 (12A7403)
Wenn Ihr Projekt einige Frameworks enthält, die x86_64 nicht unterstützen.
xxx.framework
) hinzufügenTarget -> Build Settings -> Excluded Source File Names -> Debug -> Any iOS Simulator SDK
.Framework Search Paths
, um die Pfade dieser Frameworks für zu löschenDebug -> Any iOS Simulator SDK
.Diese beiden Einstellungen können verhindern, dass Xcode diese Frameworks im Simulatormodus erstellt und verknüpft.
quelle
Ich verstehe das Problem mit arm64 und Xcode 12 und konnte Build-Probleme beheben, indem ich die arm64-Architektur für iPhone Simulator ausschloss oder ONLY_ACTIVE_ARCH für das Release-Schema festlegte. Ich habe jedoch immer noch Probleme, mein Framework mit Pod Repo Push zu pushen.
Ich habe herausgefunden, dass die Einstellung s.pod_target_xcconfig in meiner Podspec diese Einstellung nicht auf Abhängigkeiten anwendet, die in derselben Podspec definiert sind. Ich kann es im Dummy-App-Projekt sehen, das Cocoapods während der Validierung generiert. Bei der Cocoapods-Validierung wird das Release-Schema für den Simulator ausgeführt. Dies schlägt fehl, wenn eine oder mehrere Abhängigkeiten arm64 nicht ausschließen oder nicht so eingestellt sind, dass nur eine aktive Architektur erstellt wird.
Eine Lösung könnte darin bestehen, Cocoapods zu zwingen, während der Validierung des Projekts ein Nachinstallationsskript hinzuzufügen, oder es das Debug-Schema erstellen zu lassen, da das Debug-Schema nur eine aktive Architektur erstellt.
Am Ende habe ich Xcode 11 verwendet, um meinen Pod freizugeben und die Validierung zu bestehen. Sie können Xcode 11 von developer.apple.com herunterladen, als Xcode11.app in den Anwendungsordner kopieren und mit wechseln
sudo xcode-select --switch /Applications/Xcode11.app/Contents/Developer
. Vergessen Sie nicht, zurückzuschalten, wenn Sie fertig sind.quelle
Ich hatte auch das gleiche Problem mit einer bestimmten Bibliothek, die über Karthago installiert wurde. Für diejenigen, die Karthago verwenden, wird dieses Dokument durch eine Problemumgehung geführt, die in den meisten Fällen funktioniert, da Karthago mit Xcode 12 nicht sofort funktioniert. Nun, in Kürze erstellt Karthago fette Frameworks, was bedeutet, dass das Framework Binärdateien für alle unterstützten Architekturen enthält. Bis zur Einführung von Apple Sillicon hat alles einwandfrei funktioniert, aber jetzt gibt es einen Konflikt, da es doppelte Architekturen gibt (arm64 für Geräte und arm64 für Simulator). Dies bedeutet, dass Karthago architekturspezifische Frameworks nicht mit einem einzigen Fat Framework verknüpfen kann.
Sie können den Anweisungen hier folgen. Karthago XCODE 12
Dann, nachdem Sie das Karthago konfiguriert haben. Fügen Sie den arm64 in den Build-Einstellungen unter "Ausgeschlossene Architekturen" ein.
Versuchen Sie, Ihr Projekt mit dem Simulator auszuführen. Der Simulator sollte fehlerfrei laufen.
quelle
In meinem Fall:
Ich hatte 4 Konfigurationen (+ DebugQa und ReleaseQa) Cocoapods wird als Abhängigkeitsmanager verwendet
Für das Debuggen habe ich auf dem Gerät und im Simulator und auf qa nur auf dem Gerät gesammelt.
Es hat geholfen, BuildActiveArchitecture in PodsProject auf yes zu setzen
quelle
In meinem Fall habe ich versucht, auf einem watchOS 7-Simulator im Relese-Modus zu laufen, aber der iOS 14-Simulator befand sich im Debug-Modus.
Das einfache Versetzen beider Sims in den Debug / Release-Modus löste das Problem für mich!
quelle
Schalten Sie die Build-Konfiguration wieder in den Debug-Modus oder aktivieren Sie Build Active Architecture Only sowohl für den Debug- als auch für den Release-Modus. Der Grund dafür ist, dass Ihre Bibliothek / Ihr Framework die neue Simulator-Architektur ARM64 nicht unterstützt (auf einem Mac mit Apple Silicon-Prozessor ausgeführt).
quelle
Fügen Sie dem Pfad die Zeile "arm64" (ohne Anführungszeichen) hinzu: Xcode -> Projekt -> Build-Einstellungen -> Architekturen -> Ausgeschlossene Architekturen Machen Sie dasselbe für Pods. In beiden Fällen sowohl für Debug- als auch für Release-Felder.
oder im Detail ...
Die hier erwähnten Fehler bei der Bereitstellung im Simulator mit Xcode 12 sind auch eines der Dinge, die mich betroffen haben. Klicken Sie einfach mit der rechten Maustaste auf jedes meiner Projekte und zeigen Sie es im Finder an. Öffnen Sie das .xcodeproj in Atom, gehen Sie das .pbxproj durch und entfernen Sie alle VALIDARCHS-Einstellungen. Das hat es für mich zum Laufen gebracht. Versuchte einige der anderen Vorschläge (außer arm64, Build Active Architecture Only), die meinen Build weiter zu bringen schienen, mich aber letztendlich bei einem anderen Fehler zurückließen. Wenn VALIDARCH-Einstellungen herumliegen, ist es wahrscheinlich das Beste, zuerst nachzusehen.
quelle
Teilen Sie die Lösung, die für mich funktioniert hat und die jemandem helfen kann
Problem beim Kompilieren für den Simulator:
XCODE 12.1, POD 1.9.1
Meine Projektstruktur
arm64
aufzubauen Einstellungen ->Exclude Architecture
in allen Zielen.arm64
Von allen Zielen entferntVALID_ARCHS
und hinzugefügtx86_64
.Fügen Sie folgenden Code hinzu
podfile
post_install do |installer| installer.pods_project.build_configurations.each do |config| config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = "arm64" end end
Hat
pod update
, gelöschtpodfile.lock
und getanpod install
Sauber bauen.
quelle
Nachdem ich viele nutzlose Antworten online ausprobiert habe. Das funktioniert bei mir.
Generiert zunächst x86_64 für Pod-Projekte !!!!
post_install do |installer| installer.pods_project.targets.each do |target| target.build_configurations.each do |config| config.build_settings['ARCHS'] = "arm64 x86_64" end end end
Zweitens fügen Sie "x86_64" für VALID_ARCHS hinzu
quelle
Er arbeitete für mich , als ich eingestellt
$(ARCHS_STANDARD)
fürVALID_ARCHS
für Debug für jeden SDK iOS Simulator. Auch habe ich eingestelltYES
fürONLY_ACTIVE_ARCH
für Debug.quelle
Damit dies für automatisierte Calabash-Tests funktioniert
Es gibt eine Pull-Anfrage, um das Problem zu beheben, dass xcode 12 nicht mit Calabash https://github.com/calabash/run_loop/pull/757 funktioniert
Eine vorübergehende Lösung besteht darin, diesen WIP-Zweig zu verwenden, obwohl es nicht großartig ist, ihn verwenden zu müssen, da es sich um einen PR-Entwurf handelt. Die Xcode 12-Unterstützung für Calabash wird hoffentlich in Zukunft verfügbar sein.
Ändern Sie in Ihrem Gemfile
gem "run_loop"
zu
gem 'run_loop', git: 'https://github.com/calabash/run_loop.git', branch: 'xcode_14_support'
quelle