Gestionarea Pods private Cu CocoaPods

Majoritatea dintre noi folosim zilnic biblioteci open source. Cu CocoaPods, gestionarea dependențelor într-un proiect de cacao este practic nedureroasă. În unele situații, totuși, un proiect depinde de o bibliotecă sau un cadru care este închis, nu este disponibil public. Puteți utiliza în continuare CocoaPods în astfel de situații. CocoaPods funcționează excelent atât pentru bibliotecile închise, cât și pentru cele deschise.

Pentru a face acest lucru, trebuie să creați un depozit de specificații private. Odată ce l-ați stabilit, nici măcar nu observați diferența dintre dependențele publice și private, deoarece CocoaPods se ocupă de detaliile zgomotoase pentru dvs. În acest tutorial, veți învăța cum să configurați un depozit de specificații private pentru a gestiona bibliotecile private.

1. Introducere

Dacă ați folosit doar CocoaPods pentru gestionarea parțială a publicului, atunci este posibil să nu știți că CocoaPods poate gestiona mai multe depozite de specificații. Dacă în proiect nu este specificat niciun depozit de specificații Podfile, CocoaPods cade înapoi la magazia master specs.

Dacă specificați o dependență în proiectul dvs. Podfile, CocoaPods caută în mod implicit în depozitul de specificații de bază. Uitați-vă la următoarele două exemple. Ambele exemple generează același rezultat. Diferența este că specificăm în mod explicit sursa depozitului de specificații în al doilea Podfile.

platforma: ios, '8.0' țintă 'Testarea' do pod 'AFNetworking', '2.6.0' pod 'SVProgressHUD', '~> 1.1'
sursă "https://github.com/CocoaPods/Specs.git" platformă: ios, '8.0' țintă 'Testarea' do pod 'AFNetworking', '2.6.0' pod 'SVProgressHUD', '~

Dacă nu ați creat niciodată și nu ați contribuit la un pod, atunci s-ar putea să vă întrebați ce este un depozit de specificații? Un repository de specificații nu este altceva decât un depozit care conține o colecție de specificații pentru pod, fișiere cu a .podspec sau .podspec.json extensie.

După cum sugerează și numele, depozitul de specificații nu conține fișierele sursă pentru păstăi. Puteți să răsfoiți depozitul de specificații CocoaPods master pe GitHub. În cazul în care CocoaPods este instalat pe mașină, totuși, o copie a depozitului master specs este deja prezentă pe mașina dvs..

În timpul procesului de instalare, CocoaPods clonează depozitul de specificații principale în dosarul dvs. de acasă. Puteți găsi la ~ / .Cocoapods / contracte repo / master.

2. Crearea unui depozit de specificații

De obicei folosesc GitHub pentru găzduirea depozitelor Git, astfel că este platforma pe care o voi folosi pentru acest tutorial. Nu contează unde găzduiți depozitul de specificații, atâta timp cât este accesibil de toți cei din echipa dvs..

Puteți crea un cont gratuit GitHub pe care să îl urmați, dar rețineți că puteți crea numai depozite publice cu un cont gratuit. Dacă aveți o bibliotecă pe care doriți să o deschideți, atunci este recomandat să publicați pod spec la depozitul de specificații de bază, gestionat de echipa CocoaPods. Nu câștigi nimic creând un depozit public specific.

Primul lucru pe care trebuie să-l facem este să creați un depozit privat pe GitHub pentru specificațiile private pe care le vom adăuga mai târziu. Am numit-o pe a mea tutspods. GitHub vă va sugera să clonați depozitul la mașina dvs., dar acest lucru nu este necesar. CocoaPods va clona depozitul de specificații pentru dvs. după ce l-ați adăugat în CocoaPods. Asta vom face în pasul următor.

3. Adăugarea depozitului la CocoaPods

Următorul pas este să spunem CocoaPods despre depozitul de specțiuni pe care tocmai l-am creat. Faceți acest lucru executând următoarea comandă din linia de comandă.

sub repo adăugați tutspods https://github.com/bartjacobs/tutspods.git

Este posibil să observați că comanda este similară cu adăugarea unei telecomenzi la un depozit Git. Asigurați-vă că vă amintiți numele pe care îl dați depozitului de specificații, tutspods în acest caz. Vom avea nevoie de ea mai târziu.

Ori de câte ori adăugați un depozit de specificații, CocoaPods clonează depozitul mașinii dvs. Puteți verifica acest lucru navigând la ~ / .Cocoapods / operațiuni repo. Directorul ar trebui să conțină acum două depozite de specificații, maestru repository specs și tutspods specifică depozitul. În afară de a .git dosarul, tutspods directorul este gol, deoarece încă nu am adăugat nicio specificație.

4. Crearea unui pod privat

Nu cu mult timp în urmă, Andy Obusek a scris un tutorial grozav despre crearea primului tău pod. Dacă nu ați creat niciodată un pod-public sau privat, atunci vă recomandăm să citiți mai întâi articolul lui Andy. Nu voi repeta ceea ce a scris Andy în acest tutorial.

De exemplu, am creat o mică bibliotecă, TSPTableView, care conține o imagine specială UITableView subclasă. Pentru a crea un spec. Pod pentru bibliotecă, executați următoarea comandă în rădăcina bibliotecii.

pod crea spec TSPTableView

Prin executarea comenzii de mai sus, CocoaPods creează un fișier numit TSPTableView.podspec. Deschideți fișierul într-un editor de text și completați câmpurile necesare. Când ați terminat, rulați pod spec scame pentru a valida spec. Dacă spec. Pod nu trece validarea, nu veți putea împinge spec. La depozitul de specificații.

5. Apasati Spec in depozitul de specificatii

Dacă spec. Pod trece validarea, este timpul să-l împingeți la depozitul de specificații particulare pe care l-ați creat mai devreme. Faceți acest lucru executând următoarea comandă din linia de comandă.

pod repo împinge tutspods TSPTableView.podspec

Este cheia utilizării aceluiași nume pe care l-ați folosit anterior pentru a adăuga depozitul de specificații private la CocoaPods. Ultimul argument este calea către pod spec pe care o împingeți la depozitul de specificații.

6. Folosind podul privat

Putem acum folosi TSPTableView într-un nou proiect. Creați un proiect în Xcode și adăugați a Podfile la rădăcina proiectului prin rulare pod init din linia de comandă. Aceasta este ceea ce Podfile ar putea să arate când ați terminat.

platforma: ios, '8.0' țintă 'MyAmazingApp' face pod 'TSPView' sfârșit

Alerga pod instalare din linia de comandă pentru a instala dependențele enumerate în proiect Podfile. Ați întâlnit și o problemă? Văd următoarea eroare.

pod install Actualizarea depozitelor locale de specificații Analiza dependențelor [!] Nu se poate găsi o specificație pentru 'TSPTableView'

Ieșirea ne spune că CocoaPods actualizează mai întâi depozitele de specificații locale. Acest lucru înseamnă că depozitele din ~ / .Cocoapods / operațiuni repo directorul este actualizat, tragând orice modificări.

CocoaPods face acest lucru pentru a se asigura că are cea mai recentă versiune a specificațiilor stocate în depozite. Dacă ne uităm la ~ / .Cocoapods / repos / tutspods directorul, putem vedea că spec TSPTableView pod este acolo ca ne-am așteptat. De ce CocoaPods nu poate găsi spec TSPTableView?

Soluția este simplă. În partea de sus a Podfile, trebuie să specificăm ce arhive de specificații CocoaPods caută să rezolve dependențele enumerate în proiect Podfile. Aceasta este ceea ce Podfile ar trebui să arate ca să ne remediem problema.

sursă "https://github.com/bartjacobs/tutspods.git" sursă "https://github.com/CocoaPods/Specs.git" platformă: ios, '8.0' țintă 'MyAmazingApp' face pod 'TSPTableView' sfârșit

Alerga pod instalare încă o dată pentru a instala dependențele enumerate în proiect Podfile. Comanda ar trebui să se termine cu succes, după cum se arată mai jos. În prezent folosesc CocoaPods 0.38.2 astfel că ieșirea poate fi ușor diferită dacă utilizați o altă versiune de CocoaPods.

pod instalare Actualizarea depozitului de specificații locale Analizarea dependențelor Descărcarea dependențelor Instalarea TSPTableView (0.0.1) Generarea proiectului Pods Integrarea proiectului client [!] Vă rugăm să închideți toate sesiunile Xcode actuale și să utilizați "MyAmazingApp.xcworkspace" pentru acest proiect de acum încolo.

Rețineți că ordinea în care listați arhivele de specificații din Podfile este important. De exemplu, dacă ați blocat un pod public, l-ați modificat și ați creat un pod privat pentru furculiță cu același nume, veți avea o coliziune cu nume.

Aceasta nu este o problemă pentru CocoaPods, deoarece va folosi primul pod care poate găsi cu numele specificat. În general, ar trebui să puneți depozitul de specicule private în partea de sus pentru a vă asigura că CocoaPods caută pe primul loc, coborând înapoi la depozitul de specificații publice, dacă este necesar.

Concluzie

CocoaPods este un instrument excelent pe care nu l-aș putea lucra fără. Sper că acest tutorial ți-a arătat cât de puternice sunt CocoaPods și cât de ușor este să creezi și să gestionezi păstăi private cu CocoaPods.

Cod