Xcode 7 та ENABLE_BITCODE = ТАК не працює


96

Я дотримувався кількох потоків навколо нового налаштування 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)

1
Ви впевнені , що ви вибрали , Enable Bitcodeщоб NOпроти збірки конфіга ви використовуєте (наприклад DEBUG)? Ви можете перевірити це в проекті -> ціль -> налаштування збірки -> пошук enable bitcode-> встановити NOу DEBUG (добре пам’ятати, що перед тестовим випуском спробувати оновити libs, можливо, він уже міститиме біт-код). Потім Edit Scheme-> Run-> перевірте, чи є у вас DEBUGконфігурація atm.
Vive

1
НУ! так і ні. Я не встановлював його на цілі POD, це був мій випуск. Ваш натяк привів мене туди. Дякую
DirkLX

Приємно це почути :) опублікую це як відповідь, оскільки це може бути корисно для інших людей.
Vive

Чому нам потрібно змінити біт-код? Раніше нам не потрібно було оновлювати його значення. Будь-яка логічна причина? Дякую
msmq

Це все, але все-таки збій програми на пристрої з тією ж помилкою. Я використовую iOS 9.1. Будь ласка, допоможіть!
Md Rais

Відповіді:


133

Ви впевнені , що ви вибрали , Enable Bitcodeщоб NOпроти збірки конфіга ви використовуєте (наприклад DEBUG)? Ви можете перевірити це в Проект-> target-> билда настройки-> Пошук enable bitcode-> Набір NOв DEBUG(добре , щоб пам'ятати , щоб спробувати відновити LIBS до того тестового релізу, може бути , вона буде містити вже бітового коду). Потім Редагувати схему -> Виконати -> перевірити, чи є у вас DEBUGконфігурація atm.

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


1
@Zorayr Оскільки ви додали зображення до мого допису, спочатку слід перевірити налаштування збірки додатків і змінити цей прапорець у налаштуваннях збірки додатків. Тільки якщо це не допомагає, зробіть те ж саме зі стручками.
Vive

3
Чи буде заявка прийнята в App Store, якщо Enable Bitcodeвстановлено значення NO?
Ne AS

@NeAS Так. Наразі не потрібно вмикати біт-код.
Віве

Вам слід вимкнути біт-код для всіх ваших стручків
Вадим Курочкін,

53

Зверніть увагу, що для проектів, що використовують 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 додаток, якщо ми подаємо його з опцією Увімкнути біт-код = НІ?
Ganesh Guturi

@ 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

Перемикання цілі та проекту на створення налаштувань біт-код НЕ працює для АРХІВУВАННЯ. Чи знайдеться робота для збірки Sim. XCODE 7.0.1
ort11

11

Якщо ваш біт-код не відображається, виберіть "Усі". Коли xcode вибирає Basic, опція Bitcode не відображається.

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

Коли ви вибираєте Все, ви бачите біт-код. Після цього встановіть Ні для конфігурації оголошень введіть тут опис зображення


10

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

MyProjectTarget -> Параметри побудови -> Увімкнути біт-код = НІ


1
Чи буде відхилено заявку в App Store?
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 разів у моєму project.pbxproj.

Тепер мої кроки збірки можна повністю автоматизувати, оскільки fastlane подбає про все інше!


3

Якщо ви не знайдете прапор enable_bitcode. Клацніть на вкладку "Усі" на верхній панелі інструментів поруч із панеллю пошуку. введіть тут опис зображення


Будь ласка, додайте код, щоб краще пояснити свою відповідь.
Усман Макбул

1

спробуйте цю команду в терміналі, якщо ви не можете змінити налаштування BITCODE в рамках проекту,

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.