Ich habe gerade diesen Fehler erhalten, als ich eine App an den App Store übermittelte.
Bedeutet das, dass ich ENABLE_BITCODE für alle Abhängigkeiten festlegen muss? Ich habe das ausprobiert, bekam aber dann die Fehlermeldung, dass die Abhängigkeiten nicht mit Bitcode (oder so ähnlich) kompatibel sind ...
Ich hatte heute morgen das gleiche Problem. Tatsächlich liegt die Antwort im Fehler: "Stellen Sie sicher, dass alle Ziele für eine Plattform einen konsistenten Wert für die Buildeinstellungen ENABLE_BITCODE haben."
Ich hatte ein Ziel (mit ENABLE_BITCODE auf NO gesetzt) und mehrere Pods verwendet, bei denen ENABLE_BITCODE auf YES gesetzt war. Also musste ich nur ENABLE_BITCODE in meinem Projektziel auf YES setzen. Aber ich schätze, Sie haben die Wahl. Sie können ENABLE_BITCODE auch in allen von Ihnen verwendeten Bibliotheken auf NO setzen.
Die einfachste und häufigste Lösung:
Sie können die Option "Include Bitcode" deaktivieren, wenn Sie die App über Xcode abschicken .
Wenn Sie xcodebuild
verwenden, können Sie ein exportOptionsPlist übergeben, wobei der Wert von uploadBitcode
auf false gesetzt ist. In meinem Fall verwenden wir xctool
, um die App zu erstellen, und haben keine Möglichkeit, eine exportOptionsPlist
zu übergeben. Daher mussten wir Bitcode aus allen unseren Frameworks entfernen.
Wenn jemand Cocoapods verwendet und den Bitcode für seine Frameworks deaktivieren möchte, können Sie Ihrer Pod-Datei einfach Folgendes hinzufügen:
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['ENABLE_BITCODE'] = 'NO'
end
end
end
Über https://stackoverflow.com/a/32685434/1417922
Um ein wenig mehr Klarheit darüber zu geben, was in dieser Ausgabe los ist:
Es hat den Anschein, als hätte Apple gestern damit angefangen. Wenn in Ihrer Haupt-Binärdatei der Bitcode deaktiviert ist, Sie jedoch eine statische Bibliothek oder ein Framework mit aktiviertem Bitcode enthalten, schlägt die Validierung fehl. Es geht auch in die andere Richtung: Wenn in Ihrer Haupt-Binärdatei Bitcode aktiviert ist, Sie jedoch eine Bibliothek/ein Framework mit deaktiviertem Bitcode enthalten, schlägt die Validierung fehl.
Ich hatte ein paar Abhängigkeiten von GoogleMaps und Amazon, die es nicht einfach machten, alles zu aktivieren, um Bitcode zu aktivieren. Deshalb habe ich ihn einfach deaktiviert und Bitcode aus einer statischen Bibliothek entfernt, die ich in mein Projekt importiert hatte. Mit dem folgenden Befehl können Sie den Bitcode von jeder Binärdatei entfernen
$ xcrun bitcode_strip -r {Framework}.dylib -o tmp.dylib
$ mv tmp.dylib {Framework}.dylib
Während die oben genannten Lösungen für das Problem sind, stimme ich nicht zu, dass, wenn das Haupt-Binär-Bitcode deaktiviert ist, alle enthaltenen Binärdateien dies ebenfalls benötigen. Bitcode ist nur ein IR-Code, den Apple zum Ausdünnen von Anwendungen verwenden kann. Warum wird er nicht einfach aus anderen Binärdateien entfernt (was ich als das bisher angenommen habe)? Das macht für mich nicht viel Sinn.
Apple-Thread https://forums.developer.Apple.com/thread/48071
Ich habe gerade das Kontrollkästchen "Include Bitcode" deaktiviert und der Upload wurde gestartet
Für Karthago
carthage build --platform xxx
Dann können Sie erfolgreich archivieren und beim Appstore einreichen
Wir bekamen denselben Fehler "Xcode - Fehler ITMS-90635 - Ungültiges Mach-O im Bundle - Senden an den App Store" vom letzten Freitag (3. Juni 2016)
Schritt 1:
Code zur Pod-Datei hinzugefügt, um 'ENABLE_BITCODE' = 'NO'
in Pods zu markieren
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['ENABLE_BITCODE'] = 'NO'
end
end
end
Schritt 2:
In Pods 'ENABLE_BITCODE' = 'NO'
für das Projekt markiert
Anmerkung: Ich habe es mit dem Markieren von 'ENABLE_BITCODE' = 'YES'
in Pods und in meinem Projekt versucht, aber da wir twillio framework zum Aufruf verwenden, wird ein Flag -read_only_relocs
verwendet, das die Kompilierung mit 'ENABLE_BITCODE' = 'YES'
nicht zulässt. Wenn Ihre App also kein solches Framework mit -read_only_relocs
verwendet, können Sie mit der Erstellung von 'ENABLE_BITCODE' = 'YES'
fortfahren, da dies für Ihre App gut ist.
Für diejenigen, die einen Build-Fehler haben, nachdem "Enable BitCode" auf "Ja" gesetzt wurde Ich muss die gesamte Bibliothek aktualisieren. Aber der einfachste Teil ist, ich verwende Cocoapods.So ) oder Alle
Setzen Sie dann Enable BitCode vor dem Archivieren auf "Nein".
Dann Archiv >> Upload >> Es wird dieser Fehler durchlaufen.
Prost.
Ich hatte das gleiche Problem mit dem Projekt "ENABLE_BITCODE = YES" und den Abhängigkeiten "ENABLE_BITCODE = YES" auf meinem CI mit Xcode 7.3 .