Ustawienie Xcode 7 i ENABLE_BITCODE = YES nie działa


96

Śledziłem kilka wątków wokół nowego ustawienia ENABLE_BITCODE w Xcode, próbowałem też tyle, ile mogłem (przyznał, że nie jestem xcode pro), ale nadal nie mogę skompilować projektu do użytku na moim telefonie testowym?

Moja aplikacja działa dobrze na symulatorze, ale nie mogę jej wdrożyć na moim iPhonie w celu przetestowania. Na drugim właśnie zainstalowałem iOS 9 beta.

Oto otrzymany komunikat o błędzie. Wygląda na to, że ustawienie nie ma wpływu na bibliotekę PARSE.com, która jest częścią mojego projektu? Jak mogę uruchomić mój projekt na moim telefonie? Dzięki za każdą radę.

    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
Czy jesteś pewien, że wybrałeś Enable Bitcodesię NOprzeciwko budowie config używasz (np DEBUG)? Możesz to sprawdzić w project-> target-> build settings-> search enable bitcode-> set NOin DEBUG (warto pamiętać, aby spróbować zaktualizować biblioteki przed wydaniem testowym, być może będzie już zawierał bitcode). Następnie Edit Scheme-> Run-> sprawdź, czy masz DEBUGconfig atm.
Vive

1
DOBRZE! tak i nie. Nie ustawiłem tego na cele POD, to był mój przeocz. Twoja wskazówka mnie tam doprowadziła. Dzięki
DirkLX

Wspaniale to słyszeć :) zamieści to jako odpowiedź, ponieważ może być przydatne dla innych osób.
Vive

Dlaczego musimy zmienić Bitcode? Wcześniej nie musieliśmy aktualizować jego wartości. Jakiś logiczny powód? Dzięki
msmq

Zrobiłem to wszystko, ale nadal aplikacja uległa awarii na urządzeniu z tym samym błędem. Używam iOS 9.1. Proszę pomóż!
Md Rais,

Odpowiedzi:


133

Czy jesteś pewien, że wybrałeś Enable Bitcodesię NOprzeciwko budowie config używasz (np DEBUG)? Możesz to sprawdzić w projekt-> cel-> ustawienia kompilacji-> wyszukiwanie enable bitcode-> zestawNO in DEBUG(warto pamiętać, aby spróbować zaktualizować biblioteki przed wydaniem testowym, być może będzie już zawierał bitcode). Następnie Edytuj schemat -> Uruchom -> sprawdź, czy masz DEBUGkonfigurację atm.

wprowadź opis obrazu tutaj


1
@Zorayr Po dodaniu obrazu do mojego postu: najpierw sprawdź ustawienia kompilacji aplikacji i zmień tę flagę w ustawieniach kompilacji aplikacji. Tylko jeśli to nie pomoże, zrób to samo z Podami.
Vive

3
Czy aplikacja zostanie zaakceptowana w App Store, jeśli Enable Bitcodejest ustawiona na NO?
JAK

@NeAS Yes. Obecnie nie ma wymogu włączania bitcode.
Vive

Powinieneś wyłączyć bitcode dla wszystkich swoich podów
Vadim Kurochkin

53

Pamiętaj, że w przypadku projektów korzystających z CocoaPods powinieneś ustawić ENABLE_BITCODE = NO cele projektu i kontenera Pods.

Ten błąd

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)

został rozwiązany przez:

wprowadź opis obrazu tutaj

wprowadź opis obrazu tutaj


Czy Apple odrzuca aplikację, jeśli prześlemy ją z opcją Włącz Bitcode = NIE?
Ganesh Guturi

@ G.Ganesh proszę zadać jako osobne pytanie. Zasady są różne dla tvOS i watchOS, gdzie odpowiedź brzmi TAK. iOS odpowiedź brzmi obecnie nie, w przyszłości TAK.
Maxim Veksler

@GaneshGuturi Obecnie tak, ale prawdopodobnie Apple przerwie to w pewnym momencie w przyszłości. Więcej wyjaśnień np. Tutaj: stackoverflow.com/a/31207170/849616 .
Vive

17

Miałem też ten sam problem w Xcode7. Rozwiązanie tego problemu:

  • iść do PROJECT
  • budować Settings
  • Wybierz All Tab
  • wpisz wyszukiwanie Enable Bitcode
  • Update Flagdo No(który będzie pod Twoim projektem (druga kolumna))

15

Miałem podobny problem z biblioteką pod kakao GoogleAnalytics, a biblioteka nie kompilowała się dla iPhone'a 6 z iOS 8.

Moim rozwiązaniem było włączenie flagi NIE „Włącz Bitcode” w celu projektu aplikacji, a nie w projekcie Pods.


To właśnie powiedziałem w komentarzu do mojej odpowiedzi. Aby spróbować zrobić to na ustawieniach projektu, wtedy i tylko wtedy, gdy to nie działa, przełącz się na projekt pod.
Vive

Przełączanie celu i projektu na ustawienia kompilacji kod bitowy NIE nie działa w przypadku ARCHIWIZACJI. Znajduje pracę dla kompilacji Simów. XCODE 7.0.1
ort11

11

Jeśli Twój Bitcode nie jest wyświetlany, wybierz opcję Wszystkie. Gdy xcode wybiera opcję Basic, opcja Bitcode nie jest wyświetlana.

wprowadź opis obrazu tutaj

Po wybraniu opcji All you can see Bitcode. Następnie ustaw Nie dla konfiguracji reklam wprowadź opis obrazu tutaj


10

Po prostu ustawiłem to dla mojego projektu.

MyProjectTarget -> Ustawienia kompilacji -> Włącz Bitcode = NIE


1
Czy aplikacja zostanie odrzucona w App Store?
Ne AS

5

Jak wszyscy mówili, że odpowiedź jest ustawiony Enable Bitcodena Now ustawieniach kompilacji , ale myślę, że niektórzy z was mogą być zainteresowani w ten sposób z linii poleceń .

Mój projekt Xcode jest generowany przez Unity i nie chcę żadnej ręcznej interwencji w ustawienia projektu Xcode. Może jest lepszy sposób lub narzędzie, które może edytować ustawienia kompilacji, podobnie jak PlistBuddy pozwala aktualizować wartości w plistplikach. Nie znam żadnego narzędzia, które robi to do ustawień kompilacji, więc używam seda .

sed: Uruchamia zamienniki na podstawie wyrażeń regularnych.

Jak ustawić Enable Bitcode, abyNo z linii poleceń:

Tutaj nazwa mojego projektu jest Unity-iPhonetaka, że ​​uruchamiam następujące polecenie z katalogu głównego mojego projektu Xcode:

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

-e - określ polecenia seda do uruchomienia.
-i - edytuj pliki na miejscu, uruchamiając skrypty oddzielnie dla każdego pliku

Usunąć -i jeśli chcesz tylko podgląd tego, co robi;)

Zauważ, że wszystkie konfiguracje kompilacji zostaną zmienione za pomocą tego polecenia, linia ENABLE_BITCODE = YES;pojawiła się 6 razy w pliku my project.pbxproj.

Teraz moje kroki kompilacji mogą być w pełni zautomatyzowane, ponieważ fastlane zajmie się resztą!


3

Jeśli nie znajdziesz flagi enable_bitcode. Kliknij kartę „Wszystkie” na górnym pasku narzędzi obok paska wyszukiwania. wprowadź opis obrazu tutaj


Dodaj kod, aby lepiej wyjaśnić swoją odpowiedź.
Usman Maqbool

1

spróbuj tego polecenia w terminalu, jeśli nie możesz zmienić ustawień BITCODE w projekcie,

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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.