Как создать универсальную библиотеку с Xcode 10.2.1? - PullRequest
0 голосов
/ 21 июня 2019

Я новичок в создании библиотек для iOS (и новичок в разработке для iOS в целом - я только что завершил свое первое приложение "Hello, World" вчера), поэтому, пожалуйста, не бойтесь давать длинные и дружелюбные к детям ответить.

Моя цель - создать SDK, который обернет AVPlayer некоторой бизнес-логикой и интеграцией API, чтобы мы могли распространять эту библиотеку, и наши клиенты могут легко создавать приложения, которые работают с платформой потокового видео моей компании.

Чтобы начать (изучать разработку для iOS, но на самом деле еще не работал над SDK), я следовал этому руководству по статической библиотеке iOS от Ray Wenderlich . В какой-то момент он упомянул, что только что созданная библиотека будет работать только на симуляторе, а не на реальном устройстве, и объяснил, как создать универсальную библиотеку, которая будет работать на обоих. Вот когда все развалилось.

  • Ссылка на документацию для lipo 404'd
  • Справочная страница lipo не слишком полезна для объяснения, что такое lipo или что она должна делать
  • Поискав в поисках lipo, похоже, мало информации об этом
  • Xcode предлагает возможность создания «кроссплатформенных» целей, а также «совокупной» цели, что делает ее звучащей как lipo устаревшей?
  • Примечания к выпуску Xcode , похоже, намекают на то, что lipo это не устарело
  • Копирование фазы сборки «Run Script» из учебника, которому я следовал, заставило Clang выдать ошибку («i386 - недопустимая цель сборки»)
  • Погуглив эту ошибку, похоже, что i386 точен для iOS 10 и более ранних версий, но он недопустим для более новой версии iOS?
  • Я знаю, что iPad Mini (среди других устройств) не может быть обновлен до iOS 9. Если я не могу собрать для i386, как мне поддерживать эти устройства?
  • При удалении -arch i386 возникла совершенно другая ошибка: «Невозможно подключить БД»
  • Погуглив эту ошибку, я нашел предложение добавить OBJROOT=... в скрипт запуска. Это выдало другую ошибку из-за невозможности загрузить манифест, а затем заставило вентилятор моего процессора вращаться на максимальной скорости, пока Xcode остановился
  • Оглядываясь на другие учебники, подавляющее большинство кажется устаревшими, указывают на опции меню или кнопки в XCode, которые больше не существуют, или упоминают цели сборки, которых нет в моем списке опций

Может кто-нибудь рассказать мне, как именно построить универсальную библиотеку?

1 Ответ

0 голосов
/ 22 июня 2019

lipo не является устаревшим. Это инструмент для манипулирования универсальными (или «жирными») файлами Mach-O. Вы можете прочитать страницу руководства lipo в Терминале, добавив /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/share/man к переменной MANPATH и запустив man lipo.

Это учебное пособие по Wenderlich с 2013 года. Начиная с iOS 11 (выпущена в 2017 году), iOS поддерживает только 64-битные приложения и библиотеки. Возможно ли, что ваша цель развертывания установлена ​​на iOS 11 или новее? Если это так, возможно, XCode признает, что он не должен позволять вам создавать библиотеку i386 для этой цели развертывания.

Попробуйте вместо этого использовать архитектуру x86_64, если вы хотите использовать только 64-битные устройства и версии iOS.

Обратите внимание, что готовящийся к выпуску Xcode 11 (который в настоящее время находится в бета-версии 2 и будет выпущен для общего выпуска в сентябре или октябре 2019 года) поддерживает новый формат xcframework, который объединяет каркасы (или статические библиотеки) для нескольких архитектур в один пакет без (напрямую ) используя lipo. Харлан Хаскинс объясняет, как создавать и использовать файлы xcframework в WWDC 2019 Сессия 416: Двоичные фреймворки в Swift .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...