Xcode 7 и ENABLE_BITCODE= ДА, настройка не работает

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

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

Теперь вот сообщение об ошибке, которое я получаю. Похоже, что настройка не влияет на библиотеку 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)

10 ответов

Вы уверены, что выбрали Enable Bitcode в NO против конфигурации сборки, которую вы используете (например, DEBUG)? Вы можете проверить это в проекте-> target-> build build-> search enable bitcode-> набор NO в DEBUG (хорошо помнить, чтобы попытаться обновить libs перед тестовым выпуском, возможно, он уже будет содержать битовый код). Затем отредактируйте схему -> Выполнить -> проверьте, есть ли у вас DEBUG конфиг атм.

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

Обратите внимание, что для проектов, использующих 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)

был решен путем:

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

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

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

Мое решение состояло в том, чтобы повернуть к НЕТ флаг "Включить битовый код" в цели проекта приложения, а не в проекте Pods.

Если ваш бит-код не отображается, выберите "Все". При выборе xcode Basic ваш параметр Bitcode не отображается.

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

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

MyProjectTarget -> Build Settings -> Enable Bitcode = NO

Как и все говорили, ответ установлен 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 раз в моем project.pbxproj,

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

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

Если вы используете Cocoapods, это решит проблему:

      post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      config.build_settings['ENABLE_BITCODE'] = 'NO'
    end
  end
end

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

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

Другие вопросы по тегам