Как обновить нашу статическую библиотечную архитектуру для поддержки arm64 Build?

Несколько дней назад я создаю статическую библиотеку (Universal), которая отлично работает с Xcode5.0 SDK7 . После обновления Xcode5.1 с SDK7.1 который не работает, если я выбираю симулятор iPhone Retina(4-inch 64-bit) . Затем я собираюсь обновить мою библиотеку с изменением настроек Bellow.

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

Я делаю то же самое для трех целей:

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

Для спортивного симулятора, а также устройства я ставлю Universal lib и в этом запускаю скрипт: введите описание изображения здесь

После этого i Build Again lib и используется, как я сделал До этого в моем проекте. Но по-прежнему возникает проблема с iPhone Retina(4-inch 64-bit) Undefined symbols for architecture x86_64:


Итак, мой вопрос в том, что есть дополнительные изменения, необходимые для обновления lib для arm64, или я сделал какую-либо ошибку на предыдущем шаге. Пожалуйста, действуйте, если я ошибаюсь.

какие изменения необходимы для обновления моей статической библиотеки для поддержки 64Bit architecture

ЗАМЕТКА:

Я прошу создать собственное обновление библиотеки. Я не использую стороннюю библиотеку. Обновить

Я использовал эту lipo -info testingLibImport/libLibNSlog.a в моем терминале, что вывод:

 Architectures in the fat file: testingLibImport/libLibNSlog.a are: armv7 armv7s i386 arm64 

4 Solutions collect form web for “Как обновить нашу статическую библиотечную архитектуру для поддержки arm64 Build?”

Другое решение, которое я нашел с XCode 6.4, заключается в том, чтобы добавить ONLY_ACTIVE_ARCH = NO и не указывать архитектуру. Так

 xcodebuild -target TargetName ONLY_ACTIVE_ARCH=NO -configuration ${CONFIGURATION} -sdk iphonesimulator BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}" 

Будет строить архитектуры i386 и x86_64 в вашей библиотеке.


Вот мой полный универсальный скрипт запуска lib для построения всех архитектур.

 # define output folder environment variable UNIVERSAL_OUTPUTFOLDER=${BUILD_DIR}/${CONFIGURATION}-universal # Step 1. Build Device and Simulator versions xcodebuild -target TargetName ONLY_ACTIVE_ARCH=NO -configuration ${CONFIGURATION} -sdk iphoneos BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}" xcodebuild -target TargetName ONLY_ACTIVE_ARCH=NO -configuration ${CONFIGURATION} -sdk iphonesimulator BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}" # make sure the output directory exists mkdir -p "${UNIVERSAL_OUTPUTFOLDER}" # Step 2. Create universal binary file using lipo lipo -create -output "${UNIVERSAL_OUTPUTFOLDER}/lib${PROJECT_NAME}.a" "${BUILD_DIR}/${CONFIGURATION}-iphoneos/lib${PROJECT_NAME}.a" "${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/lib${PROJECT_NAME}.a" # Last touch. copy the header files. Just for convenience cp -R "${BUILD_DIR}/${CONFIGURATION}-iphoneos/include" "${UNIVERSAL_OUTPUTFOLDER}/" 

После многих вещей я получил решение. некоторые из xcode не знают, что автоматически появляются Standard architectures (including 64-bit) (armv7,armv7s,arm64) но в моем случае в проект Static Library нет возможности. поэтому я собираюсь добавить это вручную как: –

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

и выберите этот вариант: –

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

После этого я снова создаю свою статическую библиотеку и использую ее в моем проекте, который теперь отлично работает. и я также проверил с помощью команды lipo в терминале, что выход будет разным:

testLibImport / libLibNSlog.a: armv7 armv7s i386 x86_64 arm64

Я тоже столкнулся с одной и той же проблемой вчера, и после многих поисковых запросов и попыток разного решения я сдался и попробовал сам. Все, что я мог понять из различных решений, было то, что когда я запускал «lipo -info library.a», он не был построен для архитектуры x86_64. Итак, решил отказаться от совокупного подхода и сделал простую попытку.

  1. как сообщается в этом посте, я добавил armv7, armv7s и arm64 в архитектуры.
  2. построить проект статической библиотеки с помощью симулятора iphone (32 бит)
  3. построить проект статической библиотеки с помощью симулятора iphone (64 бит)
  4. создать проект статической библиотеки с помощью устройства iOS
  5. перейти к пути сборки (по производным данным)
  6. скопировал как симулятор, так и вывод устройства в общую папку
  7. используется команда lipo в окне терминала для создания универсальной библиотеки

lipo command: lipo -create -output newlibraryname.a simulatorlibraryname.a devicelibraryname.a

интегрировал новую созданную универсальную статическую библиотеку, и она РАБОТАЛА !!!

Извините за отправку другого решения так поздно. Я нашел это решение долгое время назад, когда я пытался найти решение, которое спасло бы меня от ручной работы по созданию универсальной библиотеки с помощью команды lipo каждый раз, когда мне приходилось создавать универсальную библиотеку.

Итак, вот еще один подход, для тех, кто использует обобщенный подход для построения универсальной библиотеки

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

xcodebuild -target ProductName -configuration $ {CONFIGURATION} -sdk iphonesimulator ARCHS = "i386 x86_64 " BUILD_DIR = "$ {BUILD_DIR}" BUILD_ROOT = "$ {BUILD_ROOT}" SYMROOT = "$ {SYMROOT}"

Пожалуйста, обратите внимание на включение нескольких архитектур вместо использования единого подхода к архитектуре –

xcodebuild -target ProductName -configuration $ {CONFIGURATION} -sdk iphonesimulator -arch i386 BUILD_DIR = "$ {BUILD_DIR}" BUILD_ROOT = "$ {BUILD_ROOT}" SYMROOT = "$ {SYMROOT}"

Просто ARCHS = "i386 x86_64" сделает волшебство для вас.

Вы можете подтвердить это, используя следующую липо-команду lipo -info newLibraryName.a

Надеюсь, это экономит время для многих других, таких как я !!!

  • Запуск изображения в каталоге активов содержит только пробелы для 2x и R4
  • Добавление фреймворков Xcode 5.1
  • Продолжайте получать сообщения о предупреждении «Открыть эту страницу в YourAppName?» При попытке запустить приложение из сафари
  • NSInvalidUnarchiveOperationException: 'Не удалось создать экземпляр класса с именем _UITableViewCellSeparatorView
  • Обновление iOS7 V 7.1 (11D167) несовместимо с Xcode 5 для разработки
  • Можете ли вы создать целевые зависимости Xcode 5.1 для построения только допустимых архитектур?
  • Не удается установить ipa на устройство
  • Продолжайте получать ошибки компоновщика на Xcode 5.1, несмотря на возврат только к 32-битным архитектурам
  • ошибка сборки на iOS 7.1 - Zxing
  • Проблема с модульными испытаниями в Xcode 5.1 / iOS 7.1: сбой утверждения в BKSEventFocusManager
  • iOS 7.1 дает ошибку после обновления до Xcode 5.1
  • Interesting Posts

    Передача данных соты (т.е. cell.textlabel.text и cell.imageView.image) в другой контроллер представления

    Доступ к библиотеке iPhone / iPad itunes для чтения?

    Как реализовать пользовательские эллипсы в многострочном UILabel?

    Строковые журналы NSDictionary / Base64

    NSData хранится где-то

    Измените текст UILabels с использованием значения UISliders

    Проверьте строку состояния iOS, скрытую модульным контроллером просмотра

    iOS8 / Swift: панель вкладок становится меньше по щелчку

    Сервер SVN не отвечает на запросы на запись

    Нажмите новый вид на вид спереди при использовании PKRevealController

    Ошибка синхронизации приложения Ford

    Настройка настраиваемого шрифта для внешнего вида UILabel вызывает ошибку UIDatePicker

    Сохранить изображения с помощью phimagemanager в пользовательский альбом?

    Очистить текст в текстовом поле

    CloudKit push-уведомления о рекордном обновлении перестали работать

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.