Запутался в различных процедурах для создания толстой статической библиотеки в 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-устройство и симулятор). Убедитесь, что для параметра "Создать активную архитектуру только" установлено значение "Нет". Возможно, вы захотите собрать для релиза, а не для отладки, но это зависит от ваших конкретных потребностей.
Вы слишком близки к правильному ответу. единственное, что вам нужно сделать - это
Переименуйте "framework-test-01-universal" в "framework-test-01" (оригинальное имя без суффикса) - это важно!
Зайдите в один из *.frameworks (в
Debug-ios
папка, например) и замените библиотеку вашей новой библиотекой "framework-test-01".
Это оно! ./Debug-ios/framework-test-01.framework
- готовый к использованию жирный бинарный файл! Вы можете импортировать его в свой проект!
Посмотрите ответ здесь для получения более подробной информации: Как экспортировать "толстый" Cocoa Touch Framework (для симулятора и устройства)?