Umgebung: XCode 7.0.1 Modul: Ziel-C Bundle-Typ: Framework
Hi, ich versuche ein Framework zu erstellen, um armv7, armv7s, arm64, i386 und x86_64 zu unterstützen. Ich verwende Aggregat, um die Fettbibliothek zu erstellen. Innerhalb des Aggregat-Skripts starte ich zwei xcodebuild-Befehle 1. für armv7, armv7s und arm64 und 2. für i386- und x86_64-Architekturen. Außerdem habe ich Enable-Bitcode = YES und andere C-Flags = -Fembed-Bitcode unter Ziel-Build-Einstellungen gesetzt. Als Vorsichtsmaßnahme füge ich dem xcodebuild-Befehl
die Optionen ENABLE_BITCODE = YES und OTHER_CFLAGS="- fembed-bitcode" hinzuMeine xcode Build Befehle sind wie folgt -
%Vor%Nachdem ich die obigen beiden Befehle ausgeführt habe, kombiniere ich diese beiden Builds, um mit dem folgenden Befehl
ein fettes Framework-Binary zu erstellen %Vor% Das Problem, mit dem iam konfrontiert wird, nachdem das Lipo erstellt wurde, kann ich nicht in der Bitcode-fähigen Anwendung verwenden. Nach dem Ausführen von otool -l framework_binary | grep -LLVM
sehe ich keine Bitcode-aktivierten Flags oder __LLVM.
Lipo entfernt den Bitcode aus der fetten Binärdatei. Gibt es eine Möglichkeit, Bitcode beim Ausführen des Lipo-Befehls beizubehalten?
Korrektur: Basierend auf der Antwort von Nestor, habe ich den Befehl otool als otool -l -arch armv7 framework_binary | grep LLVM
ausgeführt und zu meiner Überraschung konnte ich das Segname __LLVM clang sehen. Jedoch, wenn ich das gleiche fette Rahmenbinär in mein Projekt integriere, baut es fein auf Simulator jedoch wirft den folgenden Fehler, während ich auf Gerät laufe - ld: 'MyBinary' enthält keinen Bitcode. Sie müssen es mit aktiviertem Bitcode (Xcode-Einstellung ENABLE_BITCODE) neu erstellen, eine aktualisierte Bibliothek vom Hersteller beziehen oder den Bitcode für dieses Ziel deaktivieren. für Architektur armv7
Das ist etwas seltsam, es gibt nicht viele Dokumente dafür, am Ende benutze ich diesen Befehl:
%Vor%Fügen Sie dem xcodebuild-Befehl den BITCODE_GENERATION_MODE = Bitcode-Flag hinzu
Es sieht aus wie ein Fehler in Xcode 7.0.1. Ich hatte das gleiche Problem und Downgrade von Xcode auf Version 7 hat es behoben.
Aktualisierung: Eigentlich könnte es ein Fehler in Xcode 7 sein, der in 7.0.1 behoben wurde - diese SO-Antwort löste das Problem für mich.