Файл универсален (три среза), но в нем нет (n) ошибки среза ARMv7-s для статических библиотек на iOS, в любом случае, чтобы обойти?

Я обновил версию XCode и при использовании внешних статических библиотек я получаю это сообщение:

ld: файл универсален (3 среза), но не содержит (n) среза armv7s: /file/location для архитектуры armv7s clang: error: сбой команды компоновщика с кодом выхода 1 (используйте -v для просмотра вызова)

Есть ли способ обойти это и добавить поддержку библиотеки, если разработчик библиотеки еще не обновил свою библиотеку?

8 ответов

Решение

Если вы хотите удалить поддержку любой архитектуры, например, ARMv7-s в вашем случае, используйте меню Project -> Build Settings -> удалить архитектуру из "допустимых архитектур".

Вы можете использовать это как временное решение, пока библиотека не будет обновлена. Вы должны удалить архитектуру из основного проекта, а не из библиотеки.

В качестве альтернативы вы можете установить флаг для "Отладка только активной архитектуры" вашей конфигурации отладки на "Да". Оставьте конфигурацию выпуска "Build Active Architecture Only" на "Нет", чтобы перед выпуском вы получили напоминание о необходимости обновления любых сторонних библиотек, которые вы используете.

Я просто переключил "Build Active Architecture Only" на "Yes" в настройках сборки цели, и теперь все в порядке!

Попробуйте удалить armv7s из "Правильной архитектуры" проекта, чтобы освободить от этой проблемы для телефона iOS 5.1

Я только что опубликовал здесь исправление, которое также применимо в этом случае - в основном, вы делаете шестнадцатеричный поиск и замену во внешней библиотеке, чтобы заставить ее думать, что это код ARMv7s. Вы должны быть в состоянии использовать lipo чтобы разбить его на 3 статические библиотеки, продублируйте / измените ARMv7, затем используйте lipo снова собрать новую библиотеку для всех 4 архитектур.

Поддержка Flurry для iPhone 5 (ARMv7s) Как я уже упоминал во вчерашнем посте, Flurry начал работу над версией iOS SDK для поддержки процессора ARMv7s в новом iPhone 5 сразу после анонса в среду.

Я рад сообщить вам, что работа выполнена, и SDK теперь доступен на сайте.

Используйте меню Проект -> Настройки сборки ->

затем удалите armv7s из "действующей архитектуры". Если стандарт был выбран, то удалите его, а затем добавьте armv7.

На случай, если это случится с кем-то. Я создал свою собственную библиотеку для использования со сторонним кодом. Пока я создавал его для доставки, я случайно оставил свой iPhone 4S подключенным, и поэтому Xcode создавал мою библиотеку только для подключенной архитектуры вместо того, чтобы следовать настройкам проекта. Удалите все подключенные устройства и перестройте библиотеку, свяжите ее, и все будет в порядке.

Надеюсь, поможет.

В моем случае я ссылался на стороннюю библиотеку, которая была немного устаревшей (разработанной для iOS 6, на XCode 5 / iOS 7). Поэтому мне пришлось обновить стороннюю библиотеку, сделать Clean and Build, и теперь она успешно собирается.

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