Nie mogę mówić, czy używać CocoaPods, czy Kartaginy. Oba mają swoje mocne strony i słabe punkty. Dodatkowo należy podjąć decyzję, biorąc pod uwagę wiele czynników, z których niektóre mogą nie być w stanie kontrolować (jak klient, który upiera się przy używaniu CocoaPods!) Więc pominę tę część.
Jednak na twoje pytanie, kapsuła, którą rozwijasz, może zależeć od innej kapsuły. Masz już prawidłową linię s.dependency
. To konieczne.
Podejrzewam jednak, że powodem, dla którego nie można było powoływać się na zależną kapsułę, mogło być to, że nie posiadałeś Podfile w projekcie "tester/przykład" i/lub nie zrobiłeś pod install
po dodaniu zależność w twoim Podspecu.
Powodem tego jest wymaganie Podejrzewam, że ponieważ Podspec w rzeczywistości nie jest w ogóle przetwarzany przez Xcode, w rzeczywistości nie pobiera się (ani nie kompiluje) zależności.
Zamiast tego, kiedy wykonasz instalację pod (oczywiście za pomocą wiersza poleceń), CocoaPods utworzy projekt Pods z twoim modułem rozwojowym, strączkami, od których będziesz zależał (w Podspec), a także innymi podsystemami w twoim Podfile.
Aby przetestować tę teorię, I:
- Utworzono nową saszetkę (używając własnego CocoaPod za 'lib pod tworzyć' (https://guides.cocoapods.org/making/using-pod-lib-create.html)
- Otwarty obszar roboczy CocoaPod stworzony dla mnie i redagował Podspec do. dodać zależność
s.dependency 'RxSwift', '~> 3.0.1'
.
- dodaje inny pod moim Podfile przykład aplikacji (aby wykazać różnicę między zależnościami Podfile i zależności Podspec.)
- Wykonywane
pod install
w FOLDE przykładzie aplikacji r.
- Zmieniono klasę mojego Poda, by zrobić coś pożytecznego i dodać linię
import RxSwift
.
- Dodano etykietę do mojej przykładowej aplikacji (oczywiście "Hello World").
- Używane PureLayout zrobić wszystkie ograniczenia układu auto na etykiecie (i wykazać w jaki sposób projekt Przykład ma dostęp do obu strąków -. Strąka rozwoju, jak również odwołanie strąka
PureLayout
)
Można sprawdzić z demo utworzonego w moim publicznym GitHub: https://github.com/ericwastaken/CocoaPod-Dependency-Demo
szczerze, stworzyliśmy kilka strąków pomocą pod lib create
i rzeczywiście ma stworzyć miłą strukturę, która zawsze pracował dla mnie. Z tego powodu, polecam zawsze używać go do tworzenia szkieletu twojego strąka.
Xcode 8 komentarz: pod lib create
nadal wydaje się tworzyć projekt Swift 1.x. Tak więc, zaraz po skorzystaniu z tego narzędzia, po otwarciu Xcode pojawi się propozycja "konwersji" na nowszą wersję Swift. Pozwoliłbym, aby konwersja następowała wtedy i tam (po raz pierwszy), abyś mógł być w składni Swift 2.x lub 3.x (wybierzesz).
Dzięki za dokładną odpowiedź. Jednak myślę, że przegapiłeś ostatnią część mojego pytania, gdzie mówię, że nie chcę się rozwijać poprzez ExampleApp (lub nawet mieć go w ogóle) i chcę mieć moje testy na najwyższym poziomie w ramach samo. Chcę, aby mój ExampleApp (jeśli nawet mam) był tam po prostu, aby pokazać, w jaki sposób można wykorzystać framework. Nie powinien zawierać niczego istotnego, jak testy. Powinien być w stanie usunąć bez obaw. – solidcell
Zachęcam do sklonowania repo, które stworzyłem. Zauważysz, że przykładowa aplikacja nie jest potrzebna do czegokolwiek i naprawdę może zostać usunięta. Robisz wszystko w "kapsułach rozwoju", tak jak ty. Ponadto możesz rzeczywiście pisać testy jednostkowe przeciwko strąkowi. Docelowy cel jednostki może po prostu mieć podległość jako zależność i możesz użyć TESTOWEGO, aby wystawić prywatne metody na testy. Możesz je sklonować i eksperymentować z usunięciem przykładu. Zauważ, że nadal potrzebujesz Podfile, ale to może być samo w sobie. – ericWasTaken
Tak, tak na koniec, głównym wyborem jest to, że nadal potrzebujesz dodatkowego "Podfile", aby framework mógł się sam zbudować. Co do repo, próbowałem go zbudować, ale dostaję z tym mnóstwo problemów Xcode. Pliki nie znaleziono (czerwony), a następnie dodaje folder kompilacji na '../ build' podczas próby zbudowania. Jeśli zamknę i ponownie go otworzę, utworzy on skopiowany schemat dla każdego schematu: "___ 2" dla każdego. W porządku, ponieważ już znalazłem to samo rozwiązanie, co Ty ("Podfile"), pomijając różnice w ustawieniach projektu. – solidcell