Xcode 7 und ENABLE_BITCODE = YES Einstellung funktioniert nicht


96

Ich habe mehrere Themen rund um die neue Einstellung ENABLE_BITCODE in Xcode verfolgt, auch so viel wie möglich versucht (zugegeben, ich bin kein Xcode-Profi), aber das Projekt immer noch nicht für die Verwendung auf meinem Testtelefon kompilieren können.

Meine App läuft einwandfrei auf dem Simulator, aber ich kann sie nicht zum Testen auf meinem iPhone bereitstellen. Auf letzterem habe ich gerade iOS 9 Beta installiert.

Hier ist die Fehlermeldung, die ich erhalte. Es scheint, dass die Einstellung keinen Einfluss auf die PARSE.com-Bibliothek hat, die Teil meines Projekts ist. Wie kann ich mein Projekt auf meinem Telefon bereitstellen? Vielen Dank für jeden Rat.

    Ld /Users/xxxxxx/Library/Developer/Xcode/DerivedData/graffiti-  bnmizxueojwiqcbbnsvilljhosrw/Build/Products/Debug-iphoneos/Pods/Parse.framework/Parse normal armv7
cd /Users/xxxxxx/Documents/DigitalTempusDev/graffiti/Pods
export IPHONEOS_DEPLOYMENT_TARGET=8.0
export PATH="/Applications/Xcode-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Applications/Xcode-beta.app/Contents/Developer/usr/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"
/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -arch armv7 -dynamiclib -isysroot /Applications/Xcode-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk -L/Users/xxxxxx/Library/Developer/Xcode/DerivedData/graffiti-bnmizxueojwiqcbbnsvilljhosrw/Build/Products/Debug-iphoneos/Pods -L/Users/xxxxxx/Documents/DigitalTempusDev/graffiti/Pods/Parse -F/Users/xxxxxx/Library/Developer/Xcode/DerivedData/graffiti-bnmizxueojwiqcbbnsvilljhosrw/Build/Products/Debug-iphoneos/Pods -filelist /Users/xxxxxx/Library/Developer/Xcode/DerivedData/graffiti-bnmizxueojwiqcbbnsvilljhosrw/Build/Intermediates/Pods.build/Debug-iphoneos/Pods-Parse.build/Objects-normal/armv7/Parse.LinkFileList -install_name @rpath/Parse.framework/Parse -Xlinker -rpath -Xlinker @executable_path/Frameworks -Xlinker -rpath -Xlinker @loader_path/Frameworks -miphoneos-version-min=8.0 -dead_strip -fembed-bitcode-marker -ObjC -lParseLib -lz -framework AudioToolbox -framework CFNetwork -framework CoreGraphics -framework CoreLocation -framework QuartzCore -framework Security -framework StoreKit -framework SystemConfiguration -weak_framework Accounts -weak_framework Social -ObjC -fobjc-arc -fobjc-link-runtime -framework AudioToolbox -framework Bolts -framework CFNetwork -framework CoreGraphics -framework CoreLocation -framework Foundation -framework QuartzCore -framework Security -framework StoreKit -framework SystemConfiguration -single_module -compatibility_version 1 -current_version 1 -Xlinker -dependency_info -Xlinker /Users/xxxxxx/Library/Developer/Xcode/DerivedData/graffiti-bnmizxueojwiqcbbnsvilljhosrw/Build/Intermediates/Pods.build/Debug-iphoneos/Pods-Parse.build/Objects-normal/armv7/Parse_dependency_info.dat -o /Users/xxxxxx/Library/Developer/Xcode/DerivedData/graffiti-bnmizxueojwiqcbbnsvilljhosrw/Build/Products/Debug-iphoneos/Pods/Parse.framework/Parse

---
ld: warning: -weak_framework is treated as -framework when used with -bitcode_bundle (Xcode setting ENABLE_BITCODE=YES). Weak linking may still happen based on availability mark-up in headers
ld: warning: -weak_framework is treated as -framework when used with -bitcode_bundle (Xcode setting ENABLE_BITCODE=YES). Weak linking may still happen based on availability mark-up in headers
ld: '/Users/xxxxxx/Documents/DigitalTempusDev/graffiti/Pods/Parse/libParseLib.a(PFSQLiteDatabase.o)' does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, or disable bitcode for this target. for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)

1
Sind Sie sicher, dass Sie Enable Bitcodesich NOgegen die von Ihnen verwendete Build-Konfiguration entschieden haben (z. B. DEBUG)? Sie können es unter Projekt-> Ziel-> Build-Einstellungen-> Suchen enable bitcode-> Einstellen NOin DEBUG auschecken (denken Sie daran, die Bibliotheken vor der Testversion zu aktualisieren, möglicherweise enthält sie bereits Bitcode). Dann Edit Scheme-> Run-> prüfen Sie, ob Sie DEBUGconfig atm haben.
Vive

1
GUT! Ja und nein. Ich habe es nicht auf die POD-Ziele gesetzt, das war mein Übersehen. Ihr Hinweis hat mich dorthin gebracht. Vielen Dank
DirkLX

Schön, es zu hören :) wird es als Antwort posten, da es für andere Leute nützlich sein kann.
Vive

Warum müssen wir den Bitcode ändern? Bisher müssen wir den Wert nicht aktualisieren. Irgendein logischer Grund? Danke
msmq

Habe alles aber trotzdem die App auf dem Gerät mit dem gleichen Fehler abgestürzt. Ich benutze iOS 9.1. Bitte helfen Sie!
Md Rais

Antworten:


133

Sind Sie sicher, dass Sie Enable Bitcodesich NOgegen die von Ihnen verwendete Build-Konfiguration entschieden haben (z. B. DEBUG)? Sie können es aus in Ausbau-> ziel-> Build Einstellungen-> Suche enable bitcode-> set NOin DEBUG(gut zu merken , zu aktualisieren Libs vor dem Test - Release , um zu versuchen, vielleicht wird es enthält Bitcode bereits). Dann Schema bearbeiten -> Ausführen -> prüfen, ob Sie DEBUGconfig atm haben.

Geben Sie hier die Bildbeschreibung ein


1
@Zorayr Wie Sie meinem Beitrag ein Bild hinzugefügt haben: Sie sollten zuerst Ihre App-Build-Einstellungen überprüfen und dieses Flag in den App-Build-Einstellungen ändern. Nur wenn es nicht hilft, machen Sie dasselbe mit Pods.
Vive

3
Wird die Bewerbung im App Store akzeptiert, wenn die auf eingestellt Enable Bitcodeist NO?
Ne AS

@NeAS Ja. Derzeit ist es nicht erforderlich, den Bitcode zu aktivieren.
Vive

Sie sollten den Bitcode für alle Ihre Pods deaktivieren
Vadim Kurochkin

52

Beachten Sie, dass Sie für Projekte, die CocoaPods verwenden, ENABLE_BITCODE = NOsowohl die Projekt- als auch die Pods-Containerprojektziele festlegen sollten .

Dieser Fehler

Ld /Users/maximveksler/Library/Developer/Xcode/DerivedData/ParseUI-gwtgmlgbpobjfjfjgkiwdahqveos/Build/Products/Debug-iphoneos/ParseTwitterUtils.framework/ParseTwitterUtils normal arm64
    cd /Users/maximveksler/Developer/ParseUI-iOS/Pods
    export IPHONEOS_DEPLOYMENT_TARGET=9.0
    export PATH="/Applications/Xcode-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Applications/Xcode-beta.app/Contents/Developer/usr/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"
    /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -arch arm64 -dynamiclib -isysroot /Applications/Xcode-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk -L/Users/maximveksler/Library/Developer/Xcode/DerivedData/ParseUI-gwtgmlgbpobjfjfjgkiwdahqveos/Build/Products/Debug-iphoneos -L/Users/maximveksler/Developer/ParseUI-iOS/Pods/ParseTwitterUtils -F/Users/maximveksler/Library/Developer/Xcode/DerivedData/ParseUI-gwtgmlgbpobjfjfjgkiwdahqveos/Build/Products/Debug-iphoneos -filelist /Users/maximveksler/Library/Developer/Xcode/DerivedData/ParseUI-gwtgmlgbpobjfjfjgkiwdahqveos/Build/Intermediates/Pods.build/Debug-iphoneos/ParseTwitterUtils.build/Objects-normal/arm64/ParseTwitterUtils.LinkFileList -install_name @rpath/ParseTwitterUtils.framework/ParseTwitterUtils -Xlinker -rpath -Xlinker @executable_path/Frameworks -Xlinker -rpath -Xlinker @loader_path/Frameworks -miphoneos-version-min=9.0 -dead_strip -fembed-bitcode-marker -ObjC -lParseTwitterUtilsLib -lsqlite3 -lz -framework AudioToolbox -framework CFNetwork -framework CoreGraphics -framework CoreLocation -framework QuartzCore -framework Security -framework StoreKit -framework SystemConfiguration -weak_framework Accounts -weak_framework Social -fobjc-arc -fobjc-link-runtime -framework AudioToolbox -framework Bolts -framework CFNetwork -framework CoreGraphics -framework CoreLocation -framework Foundation -framework Parse -framework QuartzCore -framework Security -framework StoreKit -framework SystemConfiguration -single_module -compatibility_version 1 -current_version 1.8.1 -Xlinker -dependency_info -Xlinker /Users/maximveksler/Library/Developer/Xcode/DerivedData/ParseUI-gwtgmlgbpobjfjfjgkiwdahqveos/Build/Intermediates/Pods.build/Debug-iphoneos/ParseTwitterUtils.build/Objects-normal/arm64/ParseTwitterUtils_dependency_info.dat -o /Users/maximveksler/Library/Developer/Xcode/DerivedData/ParseUI-gwtgmlgbpobjfjfjgkiwdahqveos/Build/Products/Debug-iphoneos/ParseTwitterUtils.framework/ParseTwitterUtils

ld: '/Users/maximveksler/Developer/ParseUI-iOS/Pods/ParseTwitterUtils/libParseTwitterUtilsLib.a(PFTwitterAuthenticationProvider.o)' does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, or disable bitcode for this target. for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

wurde gelöst von:

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein


Lehnt Apple die App ab, wenn wir sie mit der Option Bitcode aktivieren = NEIN senden?
Ganesh Guturi

@ G.Ganesh bitte als separate Frage posten. Die Richtlinie variiert zwischen tvOS und watchOS, wobei die Antwort JA lautet. iOS die Antwort ist derzeit nein, zukünftig JA.
Maxim Veksler

@ GaneshGuturi Derzeit ja, aber wahrscheinlich wird Apple es irgendwann in der Zukunft schneiden. Weitere Erklärungen zB hier: stackoverflow.com/a/31207170/849616 .
Vive

17

Ich hatte auch das gleiche Problem in Xcode7. Lösung dafür:

  • gehe zu PROJECT
  • bauen Settings
  • wählen All Tab
  • Geben Sie die Suche ein Enable Bitcode
  • Update Flagbis No(die sich unter Ihrem Projekt befinden (zweite Spalte))

15

Ich hatte ein ähnliches Problem mit der Kakao-Pod-Bibliothek von GoogleAnalytics, und die Bibliothek wurde nicht für iPhone 6 mit iOS 8 kompiliert.

Meine Lösung bestand darin, das NO-Flag "Bitcode aktivieren" im Ziel des Anwendungsprojekts zu aktivieren - nicht im Pods-Projekt.


Das habe ich im Kommentar zu meiner Antwort gesagt. Um dies in den Projekteinstellungen zu versuchen, wechseln Sie genau dann zum Pod-Projekt, wenn dies nicht funktioniert.
Vive

Das Umschalten des Ziels und des Projekts zum Erstellen des Einstellungsbitcodes NO funktioniert bei ARCHIVING nicht. Funktioniert Arbeit für Sim-Builds. XCODE 7.0.1
ort11

11

Wenn Ihr Bitcode nicht angezeigt wird, wählen Sie bitte Alle. Wenn Sie xcode Basic auswählen, wird Ihre Bitcode-Option nicht angezeigt.

Geben Sie hier die Bildbeschreibung ein

Wenn Sie Alle auswählen, wird Bitcode angezeigt. Danach setzen Sie Nein für Anzeigenkonfiguration Geben Sie hier die Bildbeschreibung ein


10

Ich habe es gerade für mein Projekt eingestellt.

MyProjectTarget -> Build-Einstellungen -> Bitcode aktivieren = NO


1
Wird die Bewerbung im App Store abgelehnt?
Ne AS

5

Wie jeder gesagt, ist die Antwort gesetzt , Enable Bitcodeum Noin Build - Einstellungen , aber ich denke , einige von euch vielleicht dabei die vom Interesse Kommandozeile .

Mein Xcode-Projekt wird von Unity generiert und ich möchte keine manuellen Eingriffe in die Xcode-Projekteinstellungen vornehmen. Vielleicht gibt es einen besseren Weg oder ein Tool, mit dem Sie Build-Einstellungen ein wenig bearbeiten können, wie Sie mit PlistBuddy Werte in plistDateien aktualisieren können. Ich kenne kein Tool, das dies für Build-Einstellungen ausführt, daher verwende ich sed .

sed: Führen Sie Ersetzungen basierend auf regulären Ausdrücken aus.

So stellen Sie Enable Bitcodeüber die NoBefehlszeile ein:

Hier lautet mein Projektname, Unity-iPhonesodass ich den folgenden Befehl im Stammverzeichnis meines Xcode-Projekts ausführe:

sed -i -e 's/ENABLE_BITCODE = YES;/ENABLE_BITCODE = NO;/g' \ 
Unity-iPhone.xcodeproj/project.pbxproj

-e - Geben Sie sed-Befehle an, die ausgeführt werden sollen.
-i - Bearbeiten Sie Dateien direkt und führen Sie Skripts für jede Datei separat aus

Entfernen -iSie, wenn Sie nur eine Vorschau dessen möchten, was es tut;)

Beachten Sie, dass alle Ihre Build-Konfigurationen mit diesem Befehl geändert werden. Die Zeile ENABLE_BITCODE = YES;wurde in my 6 Mal angezeigt project.pbxproj.

Jetzt können meine Build-Schritte vollständig automatisiert werden, da Fastlane den Rest erledigt !


3

Wenn Sie das Flag enable_bitcode nicht finden. Klicken Sie in der oberen Symbolleiste neben der Suchleiste auf die Registerkarte "Alle". Geben Sie hier die Bildbeschreibung ein


Bitte fügen Sie einen Code hinzu, um Ihre Antwort besser zu erklären.
Usman Maqbool

1

Versuchen Sie diesen Befehl im Terminal, wenn Sie die BITCODE-Einstellungen während des Projekts nicht ändern können.

xcodebuild -target "target" -Konfiguration "configuration" ENABLE_BITCODE = NO

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.