Пиша библиотека за iOS, която зависи от някои други библиотеки с отворен код. Очевидно не е възможно да има два класа с едно и също име, така че е възможно библиотеката да се компилира и проект, който потенциално би могъл да я използва, също да се компилира, но те не работят добре заедно (на фазата на свързване).
Библиотеката е насочена към голяма аудитория, така че не мога да правя предположения дали тези разработчици ще импортират едни и същи библиотеки или не, или може да използват различна, несъвместима версия на същите библиотеки.
Разгледах наоколо, но не можах да намеря ясно решение на проблема си (може би няма). Засега се сещам за тези варианти:
- Информирайте потребителите, че X библиотеките вече са включени в проекта, така че те не ги включват също. Това означава, че те не могат да използват различна версия на X библиотеки.
- Като усъвършенствана версия на първия, използвайте CocoaPods, така че зависимостите да се разрешават автоматично. Все още има недостатъка, че две версии на библиотеката не могат да съществуват едновременно.
- Импортиране и преименуване на всички класове, от които зависи библиотеката ми, като им поставя префикс, така че имената да не са в конфликт с оригиналните. Това е досадна работа, но по-важното е, че има недостатъка, че няма да мога да изтегля/бутам код от/към оригиналната библиотека, тъй като кодът ще се промени твърде много. Все още ми се струва най-добрият вариант от гледна точка на потребителя.
Сещате ли се за по-добра идея? Аз съм доста нов в библиотечните проекти, така че може би има нещо очевидно, което пропускам.
Все още не сме решили дали да разпространяваме в двоичен или изходен код. Ако има причина да избера едно или друго бих искал да чуя и вашето мнение.