Настройка 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)

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.

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


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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.