Creare il tuo primo CocoaPod

introduzione

CocoaPods è un ottimo strumento per aiutare con la gestione delle dipendenze durante la creazione di applicazioni iOS o OS X. Essendo stato in giro e ben supportato per anni, la maturità di CocoaPods è evidente. Mentre è molto comune usare CocoaPods nei progetti software iOS o OS X, è meno comune creare effettivamente un pod da utilizzare. Questo tutorial ti guiderà attraverso la creazione del tuo primo pod e ti darà alcuni suggerimenti su ciò che caratterizza un ottimo pod.

1. Installa CocoaPods

Ovviamente, per creare un pod, è necessario installare CocoaPods. È disponibile come gemma Ruby da RubyGems. Per installare CocoaPods, esegui i seguenti comandi dalla riga di comando:

gemma installa cocoapods

Questo tutorial è stato scritto contro CocoaPods 0.37.2.

2. Panoramica passo passo

Da un livello elevato, ci sono cinque passaggi coinvolti per creare il tuo primo pod:

  1. Determina l'idea per il tuo primo pod.
  2. Utilizzare il pod lib comando per creare la struttura della directory scheletro e i file associati per il tuo pod.
  3. Aggiorna i metadati del tuo pod, ad esempio la sua licenza e le informazioni sulla versione.
  4. Aggiungi il codice per il tuo pod. Questo include sia il codice per il pod stesso sia qualsiasi codice che sarebbe necessario per un progetto di esempio.
  5. Rendi il pod disponibile al pubblico.

3. Podstorming

Podstorming non è in realtà una parola, ma è il momento di fare brainstorming per la funzionalità del tuo primo pod. Ci sono oltre 10.000 pod pubblicamente disponibili indicizzati nel repository ufficiale delle Spec. Le persone hanno trovato tutti i tipi di cose da rendere disponibili come pod. Ecco alcuni suggerimenti per aiutarti a iniziare il podstorming, err, intendo il brainstorming:

  • Codice di utilità: Hai una visione unica su come eseguire determinate manipolazioni di stringhe? Hai una sottoclasse preferita che hai scritto per l'esecuzione di un'animazione slick su a UIView? Un codice di utilità specifico come questo è un ottimo esempio di ciò che può essere trasformato in un pod. Spesso è già ben fattorizzato e disaccoppiato da altre basi di codice esistenti.
  • Pacchetti di terze parti: Hai creato un wrapper attorno a un'altra API di terze parti? Disponi di un'app per cui desideri fornire ganci per l'integrazione di altre app, ad esempio per l'autenticazione? La tua azienda fornisce un'API web per risorse basate sul Web che sarebbe utile per altre app iOS con cui integrarsi facilmente? Se è così, allora un pod ha senso poiché è un modo semplice per altre applicazioni iOS di integrarsi facilmente con questi pacchetti.
  • Componenti dell'interfaccia utente: Hai creato un widget UI senza sbavature che ti piacerebbe che altre applicazioni potessero essere in grado di utilizzare? Questi sono i miei pod preferiti. È fantastico poter aggiungere un componente UI complicato e delizioso a un'applicazione semplicemente includendo una dipendenza pod.
  • Qualcosa che vorresti che gli altri potessero usare. Hai creato qualcosa che pensi che gli altri potrebbero trovare utile? Se è così, trasformalo in un pod in modo che altri possano usarlo facilmente.

Questo tutorial ti guiderà attraverso la creazione di un pod che ti consenta di creare un UILabel che lampeggia. Lo chiameremo BlinkingLabel.

4. Creare il progetto

È ora di approfondire. Ora che conosci la funzionalità che il tuo pod sta per fornire, è ora di crearlo. Il pod lib comando è uno strumento importante che utilizzeremo per due scopi durante il processo di creazione.

  1. pod lib lint confermerà che tutto è a posto con il pod e che è pronto per essere utilizzato da CocoaPods.
  2. creazione di pod lib ti aiuterà a dare il via all'inizio fornendo una struttura di directory standard con una serie di file standard necessari per un pod di alta qualità. creazione di pod lib non è l'unico modo per creare il tuo pod, ma è il più semplice.

Aprire una finestra di Terminale, navigare in una directory di lavoro ed eseguire il seguente comando:

pod lib crea BlinkingLabel
  • Quando ti viene chiesto quale lingua vuoi usare, rispondi veloce.
  • Quando ti viene chiesto se desideri includere un'applicazione demo, rispondi .
  • Nel determinare se creare un progetto di esempio o meno, il team di CocoaPods suggerisce di chiedersi "questo pod dovrebbe includere uno screenshot?" Se è così, allora è una buona idea includere un progetto di esempio.
  • Alla domanda su quale framework di test utilizzare, rispondi Nessuna.
  • Risposta No al prompt relativo alla verifica basata sulla vista.

I test non rientrano nell'ambito di questo tutorial, ma non lasciare che ti impedisca di indagare ulteriormente dopo questo tutorial. Il rapporto tra test e linee di codice è un fattore considerato dall'Indice Qualità CocoaPods.

Quando viene installata l'impalcatura per il tuo pod, Xcode aprirà il tuo nuovo progetto pronto per il tuo lavoro sul tuo pod.

5. Aggiornamento dei metadati del pod

Ci sono tre parti principali dei metadati che devono essere inclusi nel tuo pod:

  • .podspec: Questo file descrive le informazioni su questa versione specifica del tuo pod. Il numero di pod, numero di versione, home page e autore sono alcuni esempi di ciò che è incluso. Controlla la pagina di riferimento ufficiale per maggiori informazioni.
  • README: Se hai già usato GitHub in precedenza, sai quanto è importante un README. Il README di un progetto, scritto in Markdown, viene visualizzato sulla homepage di un progetto su GitHub. Un README adeguato può essere la differenza tra qualcuno che usa il tuo progetto o no. Inoltre, è un fattore che contribuisce a un livello elevato Indice di qualità CocoaPods anche.
  • LICENZA: Per far accettare il tuo pod nel repository Spec, il tuo pod deve includere una licenza. Il creazione di pod lib comando popola automaticamente il file LICENSE con la licenza MIT e questo è ciò che useremo per questo tutorial.

Prendere il .podspec in forma, aprilo in Xcode. Lo troverai sotto BlinkingLabel / Podspec Metadata / BlinkingLabel.podspec. Fortunatamente, CocoaPods ha creato un modello ben popolato per noi quando abbiamo eseguito il creazione di pod libcomando. Stai per amare ancora di più questo strumento. Il pod lib lint comando convaliderà automaticamente il .podspec file per assicurarsi che sia conforme alle migliori pratiche. Oppure, se sei pigro, puoi anche usarlo per capire il minimo che devi fare per creare un file corretto .podspec file.

Dalla riga di comando, nella radice del progetto BlinkingLabel, eseguire il seguente comando:

pod lib lint BlinkingLabel.podspec

Questo dovrebbe produrre quanto segue:

> pod lib lint BlinkingLabel.podspec -> BlinkingLabel (0.1.0) - WARN | Il riassunto non è significativo. - WARN | La descrizione non è significativa. - WARN | Si è verificato un problema durante la convalida dell'URL https://github.com// BlinkingLabel. [!] BlinkingLabel non ha superato la convalida. Puoi usare l'opzione '--no-clean' per ispezionare qualsiasi problema.

Lo strumento ti dice che ci sono tre cose che devono essere risolti nel .podspec file:

  • aggiungi ulteriori informazioni al riassunto
  • aggiungi una descrizione appropriata
  • specificare un URL per la home page del pod

Ecco alcuni valori suggeriti per questi campi:

  • s.summary: Una sottoclasse su UILabel che fornisce un lampeggio.
  • s.description: Questo CocoaPod fornisce la possibilità di utilizzare un UILabel che può essere avviato e smesso di lampeggiare.
  • s.homepage: https://github.com/obuseme/BlinkingLabel (sostituire obuseme con il tuo nome utente GitHub)

Ma aspetta, se hai seguito le istruzioni passo dopo passo, tecnicamente non c'è ancora un progetto a quell'URL. È ora di inviare il tuo progetto a un repository pubblico su GitHub. Mentre ci sono altre opzioni per ospitare i tuoi pod, GitHub è di gran lunga il più comune.

Per inviare il tuo progetto a GitHub, accedi a GitHub, accedi o crea un account e crea un Nuovo repository chiamato BlinkingLabel. Quindi, dalla riga di comando, eseguire i seguenti comandi:

aggiungi git. git commit -m "Initial Commit" git remote aggiungi origine https://github.com//BlinkingLabel.git // replace  con il tuo nome utente github.com git push -u origine master

A questo punto, se hai fatto tutto correttamente e lanci il .podspec file di nuovo, dovrebbe passare la convalida.

> pod lib lint BlinkingLabel.podspec -> BlinkingLabel (0.1.0) BlinkingLabel ha superato la convalida.

6. Aggiunta di codice

Ora hai la shell di base di un pod, ma non fa nulla. È ora di aggiungere alcune funzionalità. La cosa bella del progetto di esempio che CocoaPods ha creato per te è che puoi scrivere contemporaneamente il codice sia per il pod che per il progetto di esempio.

Innanzitutto, trova il file ReplaceMe.swift sotto Baccelli / Cialde / BlinkingLabel / Pod / Classes / ed eliminalo.

Quindi, crea un nuovo file Swift nella stessa directory e chiamalo BlinkingLabel.swift. Sostituisci il contenuto del nuovo file con il seguente:

public class BlinkingLabel: UILabel public func startBlinking () let options: UIViewAnimationOptions = .Repeat | .Autoreverse UIView.animateWithDuration (0.25, delay: 0.0, opzioni: opzioni, animazioni: self.alpha = 0, completamento: nil) public func stopBlinking () alpha = 1 layer.removeAllAnimations ()

Hai appena aggiunto funzionalità al tuo primo pod, una sottoclasse attiva UILabel. La sottoclasse fornisce un metodo per far lampeggiare l'etichetta e un altro metodo per impedirne il lampeggiamento.

Per garantire che sia facile per gli altri sviluppatori capire come utilizzare BlinkingLabel, aggiungi del codice di esempio al progetto di esempio. Aperto BlinkingLabel / Esempio per BlinkingLabel /ViewController.swift e fai in modo che assomigli a questo:

import UIKit import Classe BlinkingLabel ViewController: UIViewController var isBlinking = false let blinkingLabel = BlinkingLabel (frame: CGRectMake (10, 20, 200, 30)) override func viewDidLoad () super.viewDidLoad () // Imposta BlinkingLabel blinkingLabel.text = "Lampeggio!" blinkingLabel.font = UIFont.systemFontOfSize (20) view.addSubview (blinkingLabel) blinkingLabel.startBlinking () isBlinking = true // Crea un UIButton per alternare il blinking lascia toggleButton = UIButton (frame: CGRectMake (10, 60, 125, 30) ) toggleButton.setTitle ("Toggle Blinking", forState: .Normal) toggleButton.setTitleColor (UIColor.redColor (), forState: .Normal) toggleButton.addTarget (self, action: "toggleBlinking", forControlEvents: .TouchUpInside) view.addSubview (toggleButton) func toggleBlinking () if (isBlinking) blinkingLabel.stopBlinking () else blinkingLabel.startBlinking () isBlinking =! isBlinking

A questo punto, vedrai Xcode lamentarsi di un sacco di errori in ViewController.swift. Questo perché il pod per BlinkingLabel non è ancora installato sul progetto di esempio. Per farlo, passa alla riga di comando e dalla radice di BlinkingLabel directory esegue il seguente comando:

> cd Esempio> pod install Analisi delle dipendenze Recupero di podspec per 'BlinkingLabel' da '... /' Download delle dipendenze Installazione di BlinkingLabel 0.1.0 (era 0.1.0) Progetto di generazione di pod Integrazione del progetto client

Quindi, tornare a Xcode e selezionare il BlinkingLabel-Example bersaglio e clicca il Correre pulsante.


Dovresti vedere qualcosa di simile a questo:

Rubinetto Commuta lampeggiante per provare il tuo nuovo pod. Il passaggio finale nella creazione del pod è l'aggiornamento di README.md. In Xcode, aperto README.md sotto Metadati di BlinkingLabel / Podspec / README.md. Vedrai che CocoaPods ha aggiunto della documentazione predefinita per te. Non fermarti qui, puoi renderlo migliore. Aggiungi della documentazione sul pod e includi uno screenshot. Ricorda che un README è spesso la prima cosa che qualcuno vedrà guardando il tuo pod. È importante che sia di alta qualità. Dai un'occhiata al mio per avere qualche ispirazione.

7. Rendere disponibile il pod

Ora che hai un pod pienamente funzionante in esecuzione sul tuo computer locale, è il momento di farlo BlinkingLabel disponibile per gli altri per l'inclusione nei loro progetti. Ad un livello elevato, ciò si ottiene portando il nuovo pod nel repository pubblico delle Spec.

Il Specifiche repository è il luogo pubblico su GitHub in cui tutti i pod pubblici sono indicizzati. In realtà non sei obbligato a usare GitHub per ospitare il codice sorgente del tuo pod. Ad esempio, puoi anche usare BitBucket. Tuttavia, le specifiche del tuo pod verranno archiviate nel repository Specifiche su GitHub.

È molto semplice aggiungere il pod al repository delle specifiche. Sono previsti tre passaggi per l'invio del pod. Non provare questi passaggi perché ho già reso pubblico BlinkingLabel. Sono qui solo per servire come riferimento.

Come prerequisito, assicurati che le tue modifiche locali a BlinkingLabel la directory del progetto viene aggiunta a git e inviata al telecomando.

Passaggio 1: tagging

Contrassegna il tuo commit più recente e spingilo al telecomando.

> git tag 0.1.0> git push origine 0.1.0 Totale 0 (delta 0), riutilizzato 0 (delta 0) a https://github.com/obuseme/BlinkingLabel.git * [nuovo tag] 0.1.0 -> 0.1.0

Questo passaggio indica che stai contrassegnando questo commit come una versione specifica del tuo pod. Il nome del tag deve corrispondere s.version nel tuo .podspec file. Il prossimo passo lo convaliderà.

Passaggio 2: convalida

Successivamente, esegui il seguente comando dalla riga di comando per verificare che tutto sia configurato correttamente tra il punto in cui è memorizzato il tuo codice sorgente e il tuo .podspec file:

 pod spec lint BlinkingLabel.podspec

Questo dovrebbe produrre quanto segue:

> pod spec lint BlinkingLabel.podspec -> BlinkingLabel (0.1.0) Analizzato 1 podspec. BlinkingLabel.podspec ha superato la convalida.

Passaggio 3: invio al repository delle specifiche

Infine, spingere le specifiche al Specifiche repository eseguendo il seguente comando:

pod trunk push BlinkingLabel.podspec

Questo dovrebbe produrre quanto segue:

> pod trunk push BlinkingLabel.podspec Aggiornamento spec repo master 'Convalida podspec -> BlinkingLabel (0.1.0) Aggiornamento spec repo' master '- URL dati: https://raw.githubusercontent.com/CocoaPods/Specs/f7fb546c4b0f80cab93513fc228b274be6459ad2/Specs /BlinkingLabel/0.1.0/BlinkingLabel.podspec.json - Registra messaggi: - 29 giugno, 20:40: Viene avviata la selezione di "BlinkingLabel 0.1.0". - 29 giugno, 20:40: è stato premuto Push per "BlinkingLabel 0.1.0" (1.701885099 s).

8. Che cosa rende un grande baccello?

Ci sono letteralmente migliaia di pod disponibili nel Specifiche repository. Quando si cerca un pod, non è facile determinare la qualità di un pod. Quando inserisci il codice di terze parti nel tuo progetto, vuoi avere un alto livello di fiducia nel codice che spedirai ai clienti. Storicamente, uno sviluppatore ha dovuto fare la propria interpretazione della qualità di un pod casuale che hanno trovato.

A partire da giugno 2015, CocoaPods ha fornito uno strumento chiamato Indice della qualità che fornisce un giudizio sintetico sulla qualità di un dato pod in base a determinate metriche. Le metriche complete e aggiornate possono essere trovate su GitHub.

In sintesi, qui ci sono cose che possono aiutare a migliorare il Indice di qualità del tuo pod:

  • popolarità del progetto misurata da stelle, forchette, abbonati e contributori
  • documentazione del codice
  • README di alta qualità
  • scritto in Swift
  • uso della licenza GPL
  • non molti problemi aperti
  • qualità del codice garantita attraverso test automatici
  • dimensioni di installazione snelle riducendo al minimo le risorse incluse
  • classi più piccole, ben composte

Il Indice di qualità di un pod può aumentare o diminuire in base al grado di conformità di un determinato progetto a questi parametri.

Conclusione

Creare pod per gli altri è divertente e un buon modo per contribuire alla comunità. Questo tutorial ti ha mostrato quali parti di codice sono utili per i buoni pod, come creare il tuo primo pod, come renderlo pubblicamente disponibile e quali tecniche possono fare per un ottimo pod.

Ora hai le conoscenze per creare il tuo primo pod. Mi piacerebbe sapere quali baccelli hai in mente per costruire. Torna indietro e rilascia un link al tuo pod una volta creato.