Я не могу говорить, использовать или не использовать CocoaPods или Carthage. У обоих есть свои сильные стороны и слабые стороны. Кроме того, решение должно быть принято с учетом многих факторов, некоторые из которых вы, возможно, не сможете контролировать (например, клиент, который настаивает на использовании CocoaPods!) Поэтому я пропущу эту часть.
Однако, на ваш вопрос, действительно, стручок, который вы разрабатываете, может зависеть от другого контейнера. У вас уже есть правильная линия s.dependency
. Это необходимо.
Однако я подозреваю, что причина, по которой вы не могли ссылаться на зависимый блок, может быть потому, что у вас не было подфайла в вашем проекте «Тестер/пример» и/или вы не сделали pod install
после добавления зависимость в вашем Podspec.
Причина, по которой я подозреваю, заключается в том, что, поскольку Podspec фактически не обрабатывается Xcode, вы фактически не загружаете (или не компилируете) зависимость.
Вместо этого, когда вы выполняете установку pod (через командную строку, конечно), CocoaPods создаст проект Pods с вашим модулем разработки, на которых вы зависите (в Podspec), а также с любыми другими модулями вашего подфайла.
Чтобы проверить эту теорию, я:
- Создано новый стручок (используя собственный CocoaPod в «стручок Lib создать» (https://guides.cocoapods.org/making/using-pod-lib-create.html)
- Открыл рабочее пространство, которое CocoaPod, созданный для меня и редактировал Podspec к. добавить зависимость
s.dependency 'RxSwift', '~> 3.0.1'
.
- Добавлен еще один стручок в моем примере приложения Podfile (чтобы продемонстрировать разницу между Podfile зависимостей и Podspec зависимостей.)
- Выполненный
pod install
в folde на примере приложения р.
- Редактировал класс моего Pod, чтобы сделать что-то полезное и добавить строку
import RxSwift
.
- Добавлен ярлык к моему примеру (конечно, «Hello World»).
- Б PureLayout сделать все ограничение Автокомпоновки для метки (и продемонстрировать, как пример проект имеет доступ к обеим стручкам -. Стручку развития, а также ссылочному стручок
PureLayout
)
Вы можете проверить из демо я создал в моем общедоступном GitHub: https://github.com/ericwastaken/CocoaPod-Dependency-Demo
Честно говоря, я создал несколько стручков с помощью pod lib create
и действительно создать хорошую структуру, которая всегда работал для меня. По этой причине я бы рекомендовал всегда использовать его для создания скелета вашего контейнера.
Xcode 8 комментарий: pod lib create
все еще, кажется, создает проект Swift 1.x. Итак, сразу после использования этого инструмента, когда вы открываете Xcode, вам будет предложено «преобразовать» в более новую версию Swift. Я бы допустил, чтобы это преобразование произошло сразу и там (в первый раз), чтобы вы могли быть в синтаксисе Swift 2.x или 3.x (вы выбираете).
Спасибо за подробный ответ. Тем не менее, я думаю, вы пропустили последнюю часть моего вопроса, где я говорю, что я не хочу развиваться через ExampleApp (или даже иметь его вообще), и я хочу, чтобы мои тесты были на верхнем уровне в рамках сам. Я хочу, чтобы мой ExampleApp (если у меня его тоже) был просто для того, чтобы показать, как можно использовать фреймворк. Он не должен содержать ничего существенного, как тесты. Он должен быть удален без беспокойства. – solidcell
Я призываю вас клонировать созданное мной репо. Вы заметите, что приложение примера не требуется ни для чего, и его действительно можно удалить. Вы все делаете в «Подвижных проектах» так же, как и вы. Кроме того, вы действительно можете написать модульные тесты против стручка. Целевая тестовая цель может просто содержать POD как зависимость, и вы можете использовать TESTABLE, чтобы подвергать частные методы испытаниям. Не стесняйтесь клонировать его и экспериментировать с удалением примера. Обратите внимание: вам все равно нужен Podfile, но это может быть само собой. – ericWasTaken
Да, в конце концов, основной взлет - это то, что вам по-прежнему нужен дополнительный «подфайл», чтобы инфраструктура могла сама строить. Что касается вашего репо, я попытался его построить, но я получаю массу проблем с Xcode. Файлы не найдены (красные), затем он добавляет папку сборки в '../ build', когда я пытаюсь построить. Если я закрою и снова открою его, он создаст скопированную схему для каждой схемы: «___ 2» для каждого. Это нормально, хотя, поскольку я уже пришел к тому же решению, что и вы («Подфайл»), различия в настройках проекта. – solidcell