Как эффективно добавить iOS-фреймворк в iOS-проект
Недавно начал работу над проектом iOS, написанным на swift и target-c. На данный момент у нас есть монолитное РЕПО. Сейчас мы сосредоточены на создании нескольких фреймворков, чтобы мы могли повторно использовать одну и ту же фреймворк в нескольких приложениях. Хотелось бы узнать ваше мнение по нижеприведенным пунктам.
Если я добавлю framework.xcodeproj в свой проект клиентского приложения, я смогу получить доступ к общедоступным сущностям каркаса после написания оператора импорта. Меня беспокоит то, что каждый раз, когда я собираюсь с помощью проекта клиентского приложения, этот framework.xcodeproj также компилируется, хотя его код не изменяется с момента последней сборки и не зависит от какой-либо другой инфраструктуры.
Если я добавлю фреймворк, добавив его как framework.framework, и сделаю его вход в встраиваемый фреймворк, я получу доступ к открытым объектам фреймворка. В этом случае настораживает то, что "всякий раз, когда я изменяю код фреймворка, мне нужно обновить фреймворк в проекте клиентского приложения".
Есть ли способ включить фреймворк в проект клиентского приложения, где я могу получить доступ к публичным объектам, и он не собирается каждый раз, когда я создаю проект клиентского приложения?
Это абсолютно нормально, если фреймворк get собирается при обновлении кода.
В прошлом я использовал Visual Studio, которая позволяла мне создавать свой клиентский проект без создания зависимых проектов, если в зависимых проектах не происходит изменения кода.
1 ответ
Если фреймворк собирается каждый раз, когда вы собираете свое приложение, зависит от типа фреймворка:
Существуют статические библиотеки Cocoa Touch и каркасные структуры Cocoa Touch.
Какао Touch Рамки
Они всегда с открытым исходным кодом и будут создаваться так же, как ваше приложение. (Таким образом, Xcode иногда компилирует его, когда вы запускаете свое приложение и всегда после того, как очистили проект.) Фреймворки поддерживают только iOS 8 и новее, но вы можете использовать Swift и Objective-C во фреймворке.
Какао Touch Статические библиотеки
Как следует из названия, они статичны. Поэтому они уже скомпилированы, когда вы импортируете их в свой проект. Вы можете поделиться ими с другими, не показывая им свой код. Обратите внимание, что статические библиотеки в настоящее время не поддерживают Swift. Вам придется использовать Objective-C в библиотеке. Само приложение все еще может быть написано на Swift.
Заключение
Если вы не возражаете против использования Objective-C, статические библиотеки, по-видимому, соответствуют вашему требованию, что фреймворк должен быть собран только один раз.
Но так как я люблю Swift, я лично рекомендую вам использовать фреймворки (если вы не возражаете, чтобы другие, которые используют фреймворк, могли видеть ваш код). Мой опыт показал, что это не большая проблема, что фреймворк иногда создается.
AddThis написал хороший пост в блоге о решении, использовать ли статические библиотеки или фреймворки.
Какао Touch Статическая библиотека против Какао Touch Framework