Запутался в различных процедурах для создания толстой статической библиотеки в Xcode 6

Меня немного смущает информация, которую я нахожу о том, как создать универсальный фреймворк, используя новейшие среды Xcode 6 и iOS 8. Например, этот ответ включает в себя следующее:

If you need to create universal static library that runs on both simulator and devices, then general steps are:

 1. Build library for simulator  
 2. Build library for device  
 3. Combine them using lipo

lipo -create -output "framework-test-01-universal" "Debug-iphonesimulator/framework-test-01.framework/framework-test-01" "Debug-iphoneos/framework-test-01.framework/framework-test-01"  Note that framework-test-01 is my framework project name.

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

Позже, другой ответ здесь говорит о создании Aggregate Target с помощью сценария Run Build Phase Run, с чем я знаком в предыдущей версии Xcode. Когда я использую этот процесс, я получаю то, что ожидаю. Структура папок выглядит следующим образом:

Может кто-нибудь помочь разобраться в этой путанице, которую мы имеем?

Какая разница между двумя?

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

2 ответа

Решение

Важное различие между библиотекой и структурой. Каркас - это просто особая структура папок, которая содержит вашу библиотеку и заголовки.

Липо объединяет библиотеки. Таким образом, инструкции имеют пример выполнения, который ссылается на библиотеку внутри уже созданной платформы (один раз для iphoneos, один раз для симулятора). Единственное различие между фреймворками - это библиотека, поэтому, используя lipo для объединения библиотек, вы получаете полную (или более толстую) библиотеку со всеми поддерживаемыми фреймворками.

Этот первый связанный ответ расскажет вам, как создать фреймворк и приложение. Беспокойся только о каркасной части. Создайте фреймворк дважды с разными целями (iOS-устройство и симулятор). Убедитесь, что для параметра "Создать активную архитектуру только" установлено значение "Нет". Возможно, вы захотите собрать для релиза, а не для отладки, но это зависит от ваших конкретных потребностей.

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

  1. Переименуйте "framework-test-01-universal" в "framework-test-01" (оригинальное имя без суффикса) - это важно!

  2. Зайдите в один из *.frameworks (в Debug-ios папка, например) и замените библиотеку вашей новой библиотекой "framework-test-01".

Это оно! ./Debug-ios/framework-test-01.framework - готовый к использованию жирный бинарный файл! Вы можете импортировать его в свой проект!

Посмотрите ответ здесь для получения более подробной информации: Как экспортировать "толстый" Cocoa Touch Framework (для симулятора и устройства)?

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