Wie mache ich fette Rahmen mit Bitcode-Option?

8

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" hinzu

Meine 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

    
Deepak Badiger 13.10.2015, 15:02
quelle

4 Antworten

6

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

    
David Cortes 29.03.2016 22:36
quelle
5

Glücklicherweise ist es nur ein Problem mit otool , nicht lipo ; Sie müssen den Parameter -arch hinzufügen:

%Vor%

Quelle: Ссылка

    
Nestor 14.10.2015 22:46
quelle
1

Versuchen Sie, das Archiv für die Arm-Slices zu verwenden, anstatt es zu erstellen

%Vor%

Danach laufen lipo, um den Simulator und den Arm zu verbinden.

Und danach% pc% ausführen und es sollte funktionieren.

    
Cosmin 22.06.2016 20:14
quelle
0

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.

    
silyevsk 18.10.2015 06:19
quelle

Tags und Links