Настройка Xcode 7 и ENABLE_BITCODE = YES не работает

96

Я следил за несколькими потоками вокруг новой настройки ENABLE_BITCODE в Xcode, также пробовал столько, сколько мог (признал, что я не профессионал xcode), но все еще не могу заставить проект скомпилировать для использования на моем тестовом телефоне?

Мое приложение отлично работает на симуляторе, но я не могу развернуть его на своем iPhone для тестирования. На последнем я только что установил бета-версию iOS 9.

Вот сообщение об ошибке, которое я получаю. Похоже, эта настройка не влияет на библиотеку PARSE.com, которая является частью моего проекта? Как я могу развернуть свой проект на моем телефоне? Спасибо за любой совет.

    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)
DirkLX
источник
1
Вы уверены , что вы выбрали , Enable Bitcodeчтобы NOпротив сборки конфига вы используете (например DEBUG)? Вы можете проверить это в project-> target-> build settings-> search enable bitcode-> set NOin DEBUG (хорошо не забыть попробовать обновить библиотеки перед тестовым выпуском, возможно, он уже будет содержать битовый код). Затем Edit Scheme-> Run-> проверьте, есть ли у вас DEBUGconfig atm.
Vive
1
ХОРОШО! да и нет. Я не устанавливал это на цели POD, это было моим упущением. Ваш намек привел меня туда. Спасибо
DirkLX
Приятно это слышать :) отправлю в качестве ответа, так как это может быть полезно другим людям.
Vive
Почему нам нужно менять биткод? Ранее нам не нужно было обновлять его значение. Какая-нибудь логическая причина? Спасибо
msmq
Сделал все, но все равно приложение вылетало на устройстве с той же ошибкой. Я использую iOS 9.1. Пожалуйста помоги!
Md Rais

Ответы:

133

Вы уверены , что вы выбрали , Enable Bitcodeчтобы NOпротив сборки конфига вы используете (например DEBUG)? Вы можете проверить это в project-> target-> build settings-> search enable bitcode-> set NOin DEBUG(не забудьте попробовать обновить библиотеки перед тестовой версией, возможно, он уже будет содержать битовый код). Затем Edit Scheme -> Run -> проверьте, есть ли у вас DEBUGconfig atm.

введите описание изображения здесь

Vive
источник
1
@Zorayr Как вы добавили изображение к моему сообщению: сначала вы должны проверить настройки сборки приложения и изменить этот флаг в настройках сборки приложения. Только если это не поможет, сделайте то же самое с Pods.
Vive
3
Будет ли приложение принято в магазине приложений, если для параметра Enable Bitcodeустановлено значение NO?
Ne AS
@NeAS Да. В настоящее время нет необходимости включать битовый код.
Vive
Вы должны отключить битовый код для всех своих подов
Вадим Курочкин
54

Обратите внимание, что для проектов, использующих CocoaPods, вы должны установить ENABLE_BITCODE = NOцели как для проекта, так и для контейнера Pods .

Эта ошибка

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)

был решен:

введите описание изображения здесь

введите описание изображения здесь

Максим Векслер
источник
Отклоняет ли Apple приложение, если мы отправляем его с опцией Enable Bitcode = NO?
Ганеш Гутури
@ G.Ganesh просьба задать отдельный вопрос. Политика варьируется между tvOS и watchOS, где ответ - ДА. iOS ответ в настоящее время нет, в будущем ДА.
Максим Векслер
@GaneshGuturi В настоящее время да, но, вероятно, Apple сократит его в какой-то момент в будущем. Дополнительные объяснения, например, здесь: stackoverflow.com/a/31207170/849616 .
Vive
17

Я также столкнулся с той же проблемой в Xcode7. Решение для этого:

  • перейти к PROJECT
  • строить Settings
  • Выбрать All Tab
  • введите поиск Enable Bitcode
  • Update Flagв No(который будет под вашим проектом (второй столбец))
Харшал Вани
источник
15

У меня была аналогичная проблема с библиотекой стручков какао GoogleAnalytics, и библиотека не компилировалась для iPhone 6 с iOS 8.

Мое решение заключалось в том, чтобы отключить флаг «Включить битовый код» в цели проекта приложения, а не в проекте Pods.

Артур Ольшак
источник
Об этом я сказал в комментарии к своему ответу. Чтобы попытаться сделать это в настройках проекта, если и только если это не работает, переключитесь на проект pod.
Vive
Переключение цели и проекта в настройки битового кода сборки NO не работает для АРХИВИРОВАНИЯ. Есть ли рабочий поиск для сим-билдов. XCODE 7.0.1
ort11
11

Если ваш битовый код не отображается, выберите «Все». Когда xcode выбирает Basic, ваш параметр Bitcode не отображается.

введите описание изображения здесь

Когда вы выбираете Все, вы видите битовый код. После этого установите Нет для конфигурации рекламы введите описание изображения здесь

этемсулан
источник
10

Я просто установил его для своего проекта.

MyProjectTarget -> Настройки сборки -> Включить Bitcode = NO

Александр
источник
1
Будет ли отклонена заявка в магазине приложений?
Ne AS
5

Как все сказали, что ответ установлен Enable Bitcodeна Noв настройках сборки , но я думаю , что некоторые из вас могли бы быть заинтересованы в этом из командной строки .

Мой проект Xcode создается Unity, и я не хочу никакого ручного вмешательства в настройки проекта Xcode. Может быть, есть лучший способ или инструмент, который может редактировать настройки сборки наподобие того, как PlistBuddy позволяет обновлять значения в plistфайлах. Я не знаю ни одного инструмента, который бы делал это для настроек сборки, поэтому использую sed .

sed: запускать замены на основе регулярных выражений.

Как установить Enable Bitcodeв Noиз командной строки:

Здесь имя моего проекта таково, Unity-iPhoneпоэтому я запускаю следующую команду из корня моего проекта Xcode:

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

-e - указать команды sed для запуска
-i - редактировать файлы на месте, запускать скрипты отдельно для каждого файла

Удалите, -iесли вам нужен только предварительный просмотр того, что он делает;)

Обратите внимание, что все ваши конфигурации сборки будут изменены с помощью этой команды, строка ENABLE_BITCODE = YES;появилась 6 раз в my project.pbxproj.

Теперь мои шаги сборки можно полностью автоматизировать, а об остальном позаботится fastlane !

ГабЛеРу
источник
3

Если вы не нашли флаг enable_bitcode. Щелкните вкладку «Все» на верхней панели инструментов рядом с панелью поиска. введите описание изображения здесь

Харун Джамил
источник
Добавьте код, чтобы лучше объяснить свой ответ.
Усман Макбул,
1

попробуйте эту команду в терминале, если вы не можете изменить настройки BITCODE в проекте,

xcodebuild -target "цель" -configuration "конфигурация" ENABLE_BITCODE = NO

Jaxs_ios
источник