webentwicklung-frage-antwort-db.com.de

Xcode - Fehler ITMS-90635 - Ungültiger Mach-O im Bundle - Übermittlung an den App Store

Ich habe gerade diesen Fehler erhalten, als ich eine App an den App Store übermittelte.

 enter image description here

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 ... 

71
Nuno Gonçalves

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.

65
Guillaume L.

Die einfachste und häufigste Lösung:

Sie können die Option "Include Bitcode" deaktivieren, wenn Sie die App über Xcode abschicken . uncheck the box

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

https://developer.Apple.com/library/content/documentation/Xcode/Conceptual/RN-Xcode-Archive/Chapters/xc7_release_notes.html

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

64
Mike Sprague

Ich habe gerade das Kontrollkästchen "Include Bitcode" deaktiviert und der Upload wurde gestartet

5
Yestay Muratov

Für Karthago 

  1. Öffnen Sie Ihre Bibliotheken in Ihrem Projektordner (Carthage-> Checkout -> [lib name])
  2. Dann öffnen Sie jede Bibliothek in Xcode
  3. Set Enable Bitcode - Nein in den Build-Einstellungen  enter image description here
  4. Tun Sie es für jede Bibliothek in Ihrer Liste 
  5. Karthago bauen carthage build --platform xxx

Dann können Sie erfolgreich archivieren und beim Appstore einreichen 

3
Dimuth Lasantha

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.

1
Swapnil

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.

0
Thiha Aung

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 .

0
iuriimoz