Что, если фреймворк импортирует некоторую библиотеку, которую также импортирует основной проект? - PullRequest
0 голосов
/ 15 февраля 2019

Нет кода, только чисто технический вопрос.

Допустим, я разрабатываю проект приложения для iOS A, который импортирует фреймворк B.Framework B использует некоторые сторонние (статические) библиотеки с открытым исходным кодом, такие как AFNetworking, MBProgressHUD или BlocksKit.Мой проект A также импортирует некоторые из тех же библиотек.

Так что мой вопрос заключается в том, содержит ли каркас B весь двоичный код, включая стороннюю библиотеку? (Я полагаю, да)проект.Означает ли это, что конечный двоичный файл приложения содержит несколько копий одного и того же кода (если библиотеки имеют одну и ту же / другую версию (и)), которые занимают некоторый ненужный том приложения?

Если обе платформы Aи наш проект B использует Cocoapods для управления библиотеками, будет ли проблема решена?

Еще один связанный с этим вопрос: для чего используется опция «Разрешить немодульные включения в каркасные модули» в настройках сборки?

1 Ответ

0 голосов
/ 15 февраля 2019

Если эти сторонние фреймворки являются динамическими библиотеками (.dylib или .framework), то на них ссылаются только из проекта, который их использует, они не «содержатся» в исполняемом файле проекта (под которым я подразумеваю исполняемый файл илидинамическая библиотека).Сторонняя динамическая библиотека должна поставляться вместе с приложением (обычно в папке Frameworks).

Если эти сторонние платформы являются статическими библиотеками (.a или иногда .framework), то онисодержатся в исполняемом файле, поэтому потенциально вы можете иметь несколько копий библиотеки в одном приложении.Здесь существует потенциальная проблема компоновщика, так как символы сторонних платформ определены в нескольких местах, но по умолчанию они должны быть скрыты, чтобы не вызывать эту проблему.

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