Administrerende Private Pods Med CocoaPods

Managing felles Pods Med CocoaPods
19
Del
3
Del
Dette Cyber ​​mandag Envato Tuts + kurs vil bli redusert til bare $ 3. Ikke gå glipp av.

De fleste av oss bruker åpen kildekode-biblioteker på en daglig basis. Med CocoaPods, administrerende avhengigheter i et Cocoa prosjektet er nesten smertefri. I noen situasjoner, avhenger imidlertid et prosjekt på et bibliotek eller rammeverk som er lukket kildekode, ikke offentlig tilgjengelig. Du kan fortsatt bruke CocoaPods i slike situasjoner. CocoaPods fungerer bra for både lukket og åpen kildekode-biblioteker.

For å gjøre dette arbeidet, må du opprette en privat specs depotet. Når du har satt en opp, trenger du ikke engang merke forskjellen mellom offentlige og private avhengigheter, fordi CocoaPods tar seg av nitty sandete detaljer for deg. I denne opplæringen vil du lære hvordan du setter opp en privat specs depot å administrere private biblioteker.

1. Innledning

Hvis du bare har brukt CocoaPods for styring av offentlige pods, så du ikke kan vite at CocoaPods kan håndtere flere spesifikasjoner repositories. Hvis ingen specs depot er spesifisert i prosjektets Podfile, faller CocoaPods tilbake til mester specs depotet.

Hvis du angir en avhengighet i prosjektets Podfile, CocoaPods søk som standard i mester specs depotet. Ta en titt på følgende to eksempler. Begge eksemplene gi det samme resultat. Forskjellen er at vi eksplisitt angi kilden til specs depotet i andre Podfile
plattform. Ios, '8.0'target «testing» gjør pod' AFNetworking ',' 2.6.0 pod SVProgressHUD ',' ~ > 1.1'endsource 'https://github.com/CocoaPods/Specs.git'platform: iOS,' 8.0'target «testing» gjør pod 'AFNetworking', '2.6.0 pod SVProgressHUD', '~ > 1.1'end

Hvis du aldri har opprettet eller bidratt til en pod, så du lurer kanskje på hva en specs depot er? En specs depotet er noe mer enn et depot som inneholder en samling av pod spesifikasjoner, filer med en .podspec eller .podspec.json forlengelse.

Som navnet antyder, ikke specs depotet inneholder kildefilene for pods. Du kan bla gjennom CocoaPods mester specs depotet på GitHub. Hvis CocoaPods er installert på maskinen din, men da en kopi av stam specs depotet allerede finnes på maskinen din.

Under installasjonsprosessen, CocoaPods kloner master specs depotet til Hjem-mappen. Du finner den på ~ /.cocoapods /repos /herre.

2. Opprette en Specs Repository

Jeg bruker vanligvis GitHub for hosting Git repositories så det er plattformen jeg skal bruke for denne opplæringen. Det spiller ingen rolle hvor du vert specs depotet så lenge det er tilgjengelig for alle på laget ditt.

Du kan opprette en gratis GitHub-konto for å følge med, men husk at du bare kan opprette offentlige arkiver med en gratis konto. Hvis du har et bibliotek som du vil åpne kilde, så det er anbefalt å publisere pod spec til mester specs depotet, som ledes av den CocoaPods team. Du trenger ikke få noe ved å opprette en egen felles specs depotet.

Det første vi må gjøre er å opprette en privat depot på GitHub for de private spesifikasjoner som vi kommer til å legge til senere. Jeg har kalt gruve tutspods. GitHub vil foreslå å klone depotet til din maskin, men det er ikke nødvendig. CocoaPods vil klone specs depotet for deg når du har lagt det til CocoaPods. Det er hva vi skal gjøre i neste trinn.

3. Legge til Repository å CocoaPods

Det neste trinnet er å fortelle CocoaPods om specs depotet vi nettopp opprettet. Du gjør dette ved å kjøre følgende kommando fra kommandolinjen.
Pod repo legge tutspods https://github.com/bartjacobs/tutspods.git

You kanskje merke til at kommandoen er omtrent som å sette en fjernkontroll til en git repository. Sørg for at du husker navnet du gir specs depotet, tutspods i dette tilfellet. Vi vil være som trenger det litt senere.

Når du legger til en specs depot, CocoaPods kloner den depotet til din maskin. Du kan kontrollere dette ved å navigere til ~ /.cocoapods /depot. Katalogen skal nå inneholde to spesifikasjoner repositories, master specs depotet og tutspods specs depotet. Bortsett fra en .git mappe, er tutspods katalogen tom siden vi ikke har lagt til noen specs ennå.

4. Opprette en privat Pod

For ikke lenge siden skrev Andy Obusek en flott tutorial om hvordan du oppretter din første pod. Hvis du aldri har opprettet en pod-offentlig eller privat, så jeg anbefaler å lese Andys artikkelen først. Jeg skal ikke gjenta hva Andy skrev i denne opplæringen.

Som et eksempel har jeg laget en liten bibliotek, TSPTableView, som inneholder en spesiell UITableView underklasse. For å opprette en pod spec for biblioteket, kjører du følgende kommando i roten av biblioteket.
Pod skape spec TSPTableView

Ved å kjøre kommandoen ovenfor, skaper CocoaPods en fil som heter TSPTableView.podspec. Åpne filen i en teksteditor og fyll inn de nødvendige feltene. Når du er ferdig, for å kjøre pod spec lo validere pod spec. Hvis pod spec ikke består validering, vil du ikke være i stand til å skyve spec til specs depotet.

5. Skyve Spec til Specs Repository

Hvis pod spec passerer validering, er det på tide å presse den til private specs depotet du opprettet tidligere. Du gjør dette ved å kjøre følgende kommando fra kommandolinjen.
Pod repo presse tutspods TSPTableView.podspec

Det er nøkkelen som du bruker samme navn som du tidligere har brukt til å legge den private specs depotet til CocoaPods. Det siste argumentet er banen til pod spec du presser til specs depotet.

6. Bruke Private Pod

Vi kan nå bruke TSPTableView i et nytt prosjekt. Opprett et prosjekt i Xcode og legge en Podfile ved roten av prosjektet ved å kjøre pod init fra kommandolinjen. Dette er hva Podfile kunne se ut når du er ferdig
plattform. Ios, '8.0'target' MyAmazingApp "gjøre pod 'TSPView'end

Kjør pod installasjon fra kommandolinjen for å installere avhengig oppført i prosjektets Podfile. Har du også kjøre inn i et problem? Jeg ser følgende feilmelding.
Pod installUpdating lokale specs repositoriesAnalyzing avhengig [!] For å finne en spesifikasjon for Kan `TSPTableView`

Utgangen forteller oss at CocoaPods først oppdaterer de lokale spesifikasjoner repositories. Dette betyr at repositories i ~ /.cocoapods /repos katalogen er oppdatert, dra på eventuelle endringer.

CocoaPods gjør dette for å sikre at den har den nyeste versjonen av spesifikasjoner som er lagret i depoter. Hvis vi tar en titt på ~ /.cocoapods /repos /tutspods katalog, kan vi se at pod spec for TSPTableView pod er det liker vi forventet. Hvorfor kan ikke CocoaPods finne pod spec for TSPTableView?

Løsningen er enkel. På toppen av Podfile, må vi spesifisere hvilke specs repositories CocoaPods søk for å løse avhengig oppført i prosjektets Podfile. Dette er hva Podfile bør se lyst til å bøte på vår problemet
kilde 'https://github.com/bartjacobs/tutspods.git'source' https://github.com/CocoaPods/Specs.git'platform.: iOS, '8.0'target' MyAmazingApp "gjøre pod 'TSPTableView'end

Kjør pod installere ett mer tid til å installere avhengig oppført i prosjektets Podfile. Kommandoen skal nå fullføre vellykket som vist nedenfor. Jeg bruker CocoaPods 0.38.2 slik at produksjonen kan være litt annerledes hvis du bruker en annen versjon av CocoaPods.
Pod installUpdating lokale specs repositoriesAnalyzing dependenciesDownloading dependenciesInstalling TSPTableView (0.0.1) Generering Pods projectIntegrating klient prosjekt [! ] Vennligst lukk alle aktuelle Xcode økter og bruke `MyAmazingApp.xcworkspace` for dette prosjektet fra nå av.

Legg merke til at rekkefølgen du liste opp specs repositories i Podfile er viktig. For eksempel, hvis du har delte en offentlig pod, endret det, og skapte en privat pod for gaffel med samme navn, vil du ha en navne kollisjon.

Dette er ikke et problem for CocoaPods, fordi det vil bruke den første pod den kan finne med det angitte navnet. Generelt bør du sette den private specs depotet på toppen for å sørge for at CocoaPods søker denne først, faller tilbake til de offentlige specs depotet om nødvendig.

Konklusjon

CocoaPods er et flott verktøy at jeg ikke ville være i stand til å fungere uten. Jeg håper denne opplæringen har vist deg hvor kraftig CocoaPods er, og hvor enkelt det er å opprette og administrere private pods med CocoaPods.



Previous:
Next Page: