2015-09-11 5 views
3

Я напрямую связывая PLCrashReporter в моем приложении IOS без использования каких-либо внешних инструментов и теперь, когда я пытаюсь скомпилировать его на Xcode 7 я получаю ошибку ссылки:Xcode 7 «CrashReporter не содержит битовый код» ошибки компоновщика

ld: '.../CrashReporter.framework/CrashReporter(libCrashReporter-iphoneos.a-armv7-master.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

Где я могу получить обновленную структуру или источники для их компиляции с включенным битовым кодом и избавиться от ошибки без отключения битового кода для полного проекта?

+0

Вы пытались отключить биткод в проекте? – trojanfoe

+0

Я предпочитаю не то, что они являются новым активом для улучшения опыта для пользователей, но я нашел источники и перекомпилировал их. –

+0

Большинство библиотек не обновляется с помощью битового кода, который идет в форме Xcode 7. так что теперь, чтобы удалить этот waring, нам нужно отключить его от установки. Найти форму решения здесь http://stackoverflow.com/a/32710815/3647325 –

ответ

8

я кончался решение этого путем создания PLCrashReporter 1.2.1 из исходных текстов , Эта версия является минимальной версией, в которой были скомпилированы Xcode 7 и iOS9.

Источник получается отсюда: PLCrashReporter 1.2.1

Разархивируйте загруженный 1.2.1 источник в папку.

Вытащите проект Xcode внутри этой папки вверх в Xcode и добавьте следующие строки в пользовательские настройки компилятора «Другие флаги С» раздела настроек проекта сборки: -fembed-bitcode

Далее добавьте следующую строку в настройках пользовательского компилятора " Другие предупредительные флаги "в разделе настроек проекта: -Wno-error=unused-command-line-argument

Затем закройте проект из графического интерфейса Xcode. Пользовательские настройки необходимы, потому что мы собираемся строить из командной строки с помощью xcodebuild, чтобы избежать ошибок устаревания PLCR, и при этом по умолчанию используется только -fembed-bitcode-marker при создании структуры таким образом. Мы переопределяем поведение по умолчанию, и вам необходимо отключить предупреждение о жесткой остановке.

Наконец, из окна терминала строки в папке, в которой почтовый файл источника, включая файл Xcode проекта находится выполните следующее:

xcodebuild -configuration Release -target 'Disk Image'

Это запустит сборку и оставить базу в ./build/Release/PLCrashReporter-1.2.1/iOS Framework

Теперь эти шаги создадут фреймворк с поддержкой биткода, но отчет о сбоях сторонних производителей несовместим с битовым кодом (при перекомпиляции App Store у вас нет способа получить файл символов из сборки на лету).

+0

Я выполнил это предложение, и на самом деле была создана структура, и я мог бы импортировать ее в свой проект. Но когда я пытаюсь архивировать, я получаю: ld: файл является универсальным (5 срезов), но не содержит (n) armv7k slice:/Users/fbartolom/Documents/приложения какао/inArrivoHD/CrashReporter.framework/CrashReporter file '/ Users/fbartolom/Documents/приложения для какао/inArrivoHD/CrashReporter.framework/CrashReporter 'для архитектуры armv7k Что касается сторонних инструментов, я использую QuincyKit, который скомпилирован с моим приложением, и поэтому он также должен быть включен в биткод. –

+0

Однако, добавив эту опцию в Xcode и повторив процедуру, она компилирует и архивирует в порядке. Теперь я пытаюсь отправить приложение в магазин, и я надеюсь иметь такую ​​же удачу. –

+0

Когда вы отправляете в App Store, обязательно снимите флажок «Включить биткод» внизу, используя эту структуру. – drshock

1

Опытный такой же вопрос. Я построил каркас аварии репортер из источника с помощью https://www.plcrashreporter.org/code

  • Открыть его в Xcode
  • Выберите «» CrashReporter цель красного яблочка.
  • Построить его

Тогда поиск в ~/Library/Developer/Xcode/DerivedData/CrashReporter-ХХХХХХХ, чтобы получить .framework сверток

+0

Да, на самом деле, делая это, он компилируется без ошибок. Теперь я пытаюсь с включенным битовым кодом. –

+0

К сожалению, когда я попытался отправить свое приложение, проблема снова всплыла. Когда я теперь пытаюсь скомпилировать его снова, я теперь получаю: ld: warning: object file (/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/arc/libarclite_macosx.a(cf.o)) был создан для новой версии OSX (10.6), чем привязан (10.5) ld: warning: object file (/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/arc/libarclite_macosx. a (arclite.o)) был создан для новой версии OSX (10.6), чем привязан (10.5) –

3

Имеется 2 варианта.
1. Загрузите PLCrashReporter источников и скомпилируйте его с включенным bitcode и используйте его в своем проекте.
2. Отключить биткод для вашей цели
Перейдите на вкладку «Настройки сборки цели», найдите значение Enable Bitcode значение «значение».

enter image description here

+0

Наоборот, я включил биткод для PLCrashReporter, воспользовавшись приведенным ниже ответом. –

0

К сожалению, этот вопрос снова представил себя. Кроме того, когда я пытаюсь снова скомпилировать я получаю:

ld: warning: object file (/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/arc/libarclite_macosx.a(cf.o)) was built for newer OSX version (10.6) than being linked (10.5) ld: warning: object file (/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/arc/libarclite_macosx.a(arclite.o)) was built for newer OSX version (10.6) than being linked (10.5)

Кроме того, если я установить бит разрешения кода на уровне проекта, я получаю немедленную ошибку: цель «CrashReporter-MacOSX-Static» позволило битового кода (ENABLE_BITCODE = YES), но он не поддерживается для платформы «macosx».

Что мне делать для создания фреймворка с включенным битовым кодом?

2

Это работает для меня, для того, чтобы включить рамки Rollbar в моем проекте:

В моем рабочем месте, я первым выбрать свой проект из Project Navigator -> цели моего проекта -> Build Settings -> Включить битовый код = нЕТ

enter image description here

Тогда я выбрать стручки из Project Navigator -> Rollbar Target -> Enable = NO битового кода

enter image description here