Как исключить библиотеку из фреймворка при ее распространении? - PullRequest
8 голосов
/ 08 марта 2019

Мы создали IOS-фреймворк, который распространяется среди разных людей. Но теперь мы столкнулись с интересной проблемой. В нашем фреймворке мы используем protobuf, и один из наших клиентов начал использовать Expo Kit, который также недавно включал Protobuf, и теперь наш клиент терпит крах с нашим фреймворком:

Class Foo is implemented in both ... One of the two will be used. Which one is undefined.

Мы не можем использовать Cocoapods Protobuf-ios, потому что он устарел.

Моя единственная возможность, о которой я могу подумать, - это создать фреймворк без наших файлов protobuf, включенных для этого клиента. Таким образом, наша структура будет использовать свои файлы профоба Expo Kit. Как мне сделать это в XCode или есть альтернативное решение.

Edit:

Чего я хочу достичь, но просто не могу понять, что это правильно. Я хочу распространять мой Framework без моего файла Protobuf.a. Protobuf.a должен зависеть от клиентских приложений.

Ответы [ 3 ]

3 голосов
/ 13 марта 2019

Рассматривали ли вы переход на другую, более поддерживаемую, Protobuf структуру, например, от Apple (бонусные баллы за то, что вы заработали за Swift).

https://github.com/apple/swift-protobuf

Надеюсь, это поможет; -)

2 голосов
/ 15 марта 2019

Вам не нужно связывать Protobuf в вашем клиентском приложении, если оно уже встраивает / связывает ваш фреймворк, содержащий Protobuf.

В вашем клиентском приложении вы можете указать путь к Protobuf, встроенному в фреймворк. Вам просто нужно изменить Framework Search Path для клиентского приложения и указать путь к protobuf, встроенному в платформу.

2 голосов
/ 15 марта 2019

Вам необходимо иметь ссылку dynamic на пакет и избегать встраивания сторонних двоичных файлов в вашу инфраструктуру, если в этом нет необходимости.

Оформите эти статьи, надеюсь, они вам помогут:

https://theswiftdev.com/2018/01/25/deep-dive-into-swift-frameworks/ https://www.bignerdranch.com/blog/it-looks-like-you-are-trying-to-use-a-framework/

Также это интересно:

Когда мы должны использовать «встроенные двоичные файлы», а не «Связанные фреймворки» в Xcode?

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