Представьте себе следующую ситуацию;Структура библиотеки iOS8, связывающая WITHOUT Pods
Я разрабатываю каркас для какао, который требует SomeLibrary (например, AFNetworking). Мои рамки будут включены в чей-то проект, который может потребовать SomeLibrary. Как это сделать, не запуская эти неприятные повторяющиеся предупреждения, когда я включаю AFNetworking в свою структуру напрямую (либо через исходный код, либо в Cocoapods)?
Я пробовал это с Cocoapods в обоих проектах (моя фреймворк и тестовый проект, который включает в себя мою фреймворк), но это также приводит к предупреждению двойного кода.
Когда я не добавляю AFNetworking в свой проект разработки фреймворка, компилятор не может найти нужные файлы, поэтому я не могу его создать. Я попытался включить исходный код AFNetworking непосредственно в основной проект и использовать модуль, но в обоих случаях сбой импорта AFNetworking/AFNetworking.h в рамках проекта.
Как я могу это сделать, не создавая мой фреймворк (что на самом деле не вариант)?
Я нашел этот связанный ответ, но я не знаю, какой путь поиска установить для проекта рамки, чтобы найти библиотеку главного проекта; https://stackoverflow.com/a/23123725/1069487
Любая помощь была бы высоко оценена!
Хотя это, как представляется, решение, я не вещь, это жизнеспособный один. Я, как поставщик инфраструктуры, действительно не намерен предоставлять библиотеку AFNetworking моим клиентам, поскольку это может иметь серьезные последствия для их текущего процесса разработки. Представьте, что они используют CocoaPods для своего проекта, в том числе POS для AFNetworking. Использование описанного вами метода существенно портит эту зависимость для них и заставит меня обновлять статическую библиотеку AFNetworking всякий раз, когда что-то меняется на эту библиотеку, которая может представлять интерес для моего клиента. – AlBirdie
Итак, вы должны включить его исходный код AFNetworking в свой проект и реорганизовать классы AFNetworking и глобальные функции/переменные (например, добавить ваши инициалы: AIAFNetworking), чтобы они не сталкивались с другим импортным AFNetworking в проекте конечного пользователя. Имена методов можно сохранить, потому что они привязаны к классу, чьи имена будут изменены. –
Мысль об этом тоже, но это довольно уродливое решение, если честно. Я, честно говоря, не могу себе представить, что эта проблема не может быть решена хорошо (как-то указывая на мою структуру, чтобы посмотреть на основной проект для зависимостей), поскольку она, вероятно, довольно распространенная. – AlBirdie