• Programmazione Android
  • CORSI ONLINE
  • Web Agency

Logo

Corsi di programmazione web e mobile online
Navigation
  • Home
  • CORSI ONLINE
  • Tutorial Pratici
  • GUIDE COMPLETE
    • Corso completo di C
    • Corso videogame con Cocos2d
    • Programmazione Cocoa Touch
  • Sezioni
    • Libri e manuali
    • Tips & Tricks
    • Risorse utili
    • Strumenti di Sviluppo
    • Materiale OpenSource
    • Framework
    • Guide Teoriche
    • Guide varie
    • Grafica e Design
    • iPad
    • News
    • Video Tutorial
    • Windows Phone
  • Pubblicità
  • About
    • Chi siamo
    • Pubblicazioni
    • Collabora
    • Sostieni devAPP

CococaPods: gestire le dipendenze e gli aggiornamenti in Xcode in modo automatico

By IgnazioC | on 30 Luglio 2013 | 3 Comments
Risorse utili

CocoaPods-Xcode-01 Ciao a tutti, oggi parliamo di un semplice e vitale strumento che ci aiuterà nella gestione dei nostri progetti e che ogni sviluppatore di applicazioni iPhone e iPad sicuramente apprezzerà.
Di cosa stiamo parlando? Di CocoaPods. Tecnicamente è uno script ruby in grado di gestire in modo automatizzato le dipendenze nei progetti Xcode, ma detto in maniera più semplice è la soluzione ai problemi con i quali tutti, chi prima chi poi, ci siamo imbattuti quando ad esempio abbiamo dovuto installare una nuova libreria trovata su github. Un secondo vantaggio meno evidente, ma non meno importante, è relativo agli aggiornamenti delle librerie stesse. Già, perché il problema grave è che spesso per configurare delle librerie esterne viene semplicemente copiato il sorgente completo all’interno del proprio progetto, rendendo in questo modo difficile – se non impossibile – gestirne gli update in maniera regolare. Ma niente paura, da oggi userete tutti CocoaPods e i vostri problemi svaniranno.

Sul sito di riferimento (http://cocoapods.org/) si puo’ trovare una brevissima guida per l’installazione. Noi la vedremo comunque nel dettaglio in un esempio concreto: creeremo un progetto Xcode che fa uso di due librerie esterne: AFNetworking e MagicalRecord.

Fase 1: Installare CocoaPods

L’installazione è molto semplice perché sfrutta il metodo di distribuzione tipico di Ruby, le gemme. Aprite quindi il terminale (non chiedete cosa sia il terminale! 🙂 ) e digitate

[sudo] gem install cocoapods

Le parentesi indicano che la parola “sudo” è facoltativa, ma tranne rari casi in cui siete già loggati come utente root, è necessario digitarla. Vi verrà richiesta la password dell’account amministrativo, digitatela e attendete qualche minuto. L’installazione non è rapida e potrebbe sembrare che tutto sia bloccato… ma dategli almeno 5/10 minuti di tempo.

Una volta installata la gemma bisognerà lanciare il comando

pod setup

Fase 2: Dichiarare le proprie dipendenze

Una volta installato cocoapods creiamo il nostro progetto di esempio, che configureremo con AFNetworking e MagicalRecord. Potete creare un progetto di tipo “Single View” perché non faremo nulla di grafico, ci limiteremo a configurare correttamente le due librerie. Create quindi il vostro progetto e assegnategli il nome che preferite, poi aprite il terminale e posizionatevi nella stessa cartella nella quale avete creato il progetto.

Il prossimo passo è quello di generare il file dove andremo ad elencare quali sono le dipendenze del nostro progetto e alcuni altri dettagli. Create quindi un nuovo file di testo usando un qualsiasi editor testuale (textmax, sublimetext, textwrangler, smultron…) all’interno della cartella del progetto e chiamatelo Podfile. Questa è la struttura del mio attuale progetto:

 


Screen Shot 2013-07-28 at 6.48.30 PM
 

Ma cosa dovremo scrivere dentro questo file? Intanto specifichiamo la piattaforma e la release per la quale stiamo sviluppiamo in modo che lo script sappia cosa cercare:

platform :ios, 6.1

Quindi andiamo a specificare, una per una, le nostre dipendenze. Aggiungiamo questa riga al file:

pod AFNetworking

per specificare che vogliamo utilizzare AFNetworking (a MagicalRecord ci penseremo tra un attimo).

Salvate il file “Podfile” e aprite un terminale posizionandovi nella cartella del progetto.

Consiglio a tutti l’installazione di un piccolo programmino gratuito dal divertente nome di “Go2Shell” (gioco di parole con Go to hell->Vai all’inferno Nda) https://itunes.apple.com/it/app/go2shell/id445770608?l=en&mt=12 che vi permette di aprire un teminale già posizionato nella directory corrente.

Fase 3: Installare le dipendenze

Digitate:

pod install

finito 🙂

Scherzi a parte cocoapods fa un lungo lavoro in cui preleva la libreria richiesta da github, la inserire in un progetto AdHoc e configura un nuovo workspace per gestire il tutto, infatti sul teminale possiamo vedere:

Downloading dependencies
Installing AFNetworking (1.3.1)
Generating Pods project
Integrating client project

[!] From now on use `DevAppCocoaPods.xcworkspace`.

Quell’ultimo messaggio significa che da adesso in poi dovremo usare il file del workspace e non il singolo progetto.

La struttura delle cartelle è diventata questa:

 


Screen Shot 2013-07-28 at 7.04.00 PM
 

dove possiamo vedere l’icona del workspace che una volta aperto si presenta così:

 


Screen Shot 2013-07-28 at 7.05.41 PM
 

CocoaPods si è già preoccupato di configurare correttamente le variabili di ambiente HEADER_SEARCH_PATH, di includere i framework di sistema necessari per AFNetoworking, realizzare per noi la libreria statica e tutta un’altra serie di cose che se gestite manualmente avrebbero portato via un mare di tempo.

Per assicurarci che tutto abbia funzionato correttamente inseriamo un pezzo di codice che utilizzi AFNetworking e vediamo se è tutto ok.

Aprite il progetto (il workspace, mi raccomando) e modificate il file AppDelegate.m importando una delle classi più utili di questo framework:

#import "AFJSONRequestOperation.h"

Quindi aggiungiamo un po’ di codice all’interno del metodo application:didFinishLaunchingWithOptions: nel relativo file di implementazione:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    NSURL *url = [NSURL URLWithString:@"https://alpha-api.app.net/stream/0/posts/stream/global"];
    NSURLRequest *request = [NSURLRequest requestWithURL:url];
    AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
        NSLog(@"App.net Global Stream: %@", JSON);
    } failure:nil];
    [operation start];

    return YES;
}

Se avete fatto tutto correttamente sarete in grado di compilare l’applicazione e vedere il risultato nella console di log. Attenti a selezionare il giusto target dal menù in alto!

 


Screen Shot 2013-07-28 at 7.19.24 PM
 

Ok, ma abbiamo installato solo AFNetworking e adesso? Niente di più facile, per installare tutte le altre dipendenze non c’è che da aggiungere la riga specifica al file Podfile, quindi aggiungiamo:

MagicalRecord

e dal terminale digitiamo nuovamente:

pod install

CocoaPods si renderà conto della nuova dipendenza ed installerà soltanto quella, lasciando il resto inalterato.

Per verificare che tutto funzioni modifichiamo al solito AppDelegate.m importando il file principale di MagicalRecord tramite:

#import "CoreData+MagicalRecord.h"

Proviamo quindi a creare l’intero stack di CoreData con questo metodo:

[MagicalRecord setupCoreDataStackWithAutoMigratingSqliteStoreNamed:@"database.sqlite"];

Se tutto compila senza errori ce l’avete fatta 🙂 il vostro progetto AFNetworking + MagicalRecord è pronto e senza nessun mal di testa.

Conclusioni

Prima di concludere ci sono due comandi che sicuramente vi faranno molto comodo e ne approfitto per segnalarveli.

Il primo è search nella sintassi:

pod search nomelibreria

Grazie a questo comando potrete cercare se è presente una libreria nell’archivio di CocoaPods. Il secondo comando è:

pod update

il cui compito, come avrete intuito, è quello di verificare l’esistenza di versioni più aggiornate delle librerie che stiamo utilizzando.

And now?

Adesso che avete appreso le basi di cocosapods potete guardare la documentazione del progetto disponibile qui: http://docs.cocoapods.org/ per verificare le diverse opzioni utilizzabili e poi generare le specifiche pods anche per i vostri progetti su github così che gli altri utenti possano installare le vostre librerie in modo semplice e veloce!

Utile, no?
Buona programmazione!

 

PS: Come è stato giustamente segnalato nei commenti, l’installazione di Cococapod (e di tanta altra bella roba) richiede l’installazione di “Xcode command line tools” liberamente scaricabili e installabili da qui: https://developer.apple.com/xcode/

Articoli-Ignazio-Calo-devAPP corso-programmazione-c-devapp-ignazio-calo corso-cocos2d-devapp-ignazio-calo
Share this story:
  • tweet

Tags: AFNetworkinggestire le dipendenze xcodeinstallare e usare cocoapodslibrerie esterne iosMagicalRecord

Recent Posts

  • Parte il percorso programmatori iOS in Swift su devACADEMY.it

    20 Dicembre 2017 - 0 Comment
  • Android, crittografare dati velocemente con Encryption

    24 Settembre 2018 - 0 Comment
  • Sql2o, accesso immediato ai database tramite Java

    3 Settembre 2018 - 0 Comment
  • Okio, libreria per ottimizzare l’input/output in Java

    27 Agosto 2018 - 0 Comment

Related Posts

  • AFNetworking: una libreria per semplificare il networking di un app

    18 Febbraio 2015 - 0 Comment

Author Description

3 Responses to “CococaPods: gestire le dipendenze e gli aggiornamenti in Xcode in modo automatico”

  1. 22 Novembre 2013

    mlena

    Posso solo suggerire di controllare di avere “Command Line Tools” installato in XCode? Capra come sono ho cercato di installare cocoapods svariate volte senza successo (e senza capirne il motivo)… Magari può aiutare qualche altro “quasi principiante” come me!!
    Per il resto ottima guida… chiara, utile e leggibile!!

  2. 23 Novembre 2013

    IgnazioC

    grazie mille dell’indicazione! 🙂 l’ho inserita in calce all’articolo.

  3. 9 Aprile 2014

    dcrescenti

    all’esecuzione di

    pod install

    ottengo il seguente messaggio

    —
    Setting up CocoaPods master repo
    [!] Pod::Executable clone ‘https://github.com/CocoaPods/Specs.git’ master –depth=1

    Cloning into ‘master’…

    fatal: Unable to find remote helper for ‘https’

    /Library/Ruby/Gems/2.0.0/gems/claide-0.5.0/lib/claide/command.rb:281:in `rescue in run’: undefined method `verbose?’ for nil:NilClass (NoMethodError)
    from /Library/Ruby/Gems/2.0.0/gems/claide-0.5.0/lib/claide/command.rb:274:in `run’
    from /Library/Ruby/Gems/2.0.0/gems/cocoapods-0.31.1/lib/cocoapods/command.rb:51:in `run’
    from /Library/Ruby/Gems/2.0.0/gems/cocoapods-0.31.1/bin/pod:33:in `’
    from /usr/bin/pod:23:in `load’
    from /usr/bin/pod:23:in `’
    —

    N.B. – anche pod setup mi ha dato un errore eccolo:
    —
    [!] Pod::Executable clone ‘https://github.com/CocoaPods/Specs.git’ master –depth=1

    Cloning into ‘master’…

    fatal: Unable to find remote helper for ‘https’
    —

    non so cosa fare, non sono ferrato sui comandi da terminale o sulle possibili problematiche. Ho cercato in rete ma non ho risolto nulla.

    P.S. – sono collegato da una virtual machine che monta OS X Mavericks 10.9.2 e mi collego alla rete via NAT in modalità NAT.

Leave a Reply

Your email address will not be published. Required fields are marked *


*
*

Corso online di programmazione android e java

SEZIONI

  • Android
  • Comunicazioni
  • Contest
  • Corsi ed Eventi
  • Corso completo di C
  • Corso programmazione videogiochi
  • Framework
  • Grafica e Design
  • Guida rapida alla programmazione Cocoa Touch
  • Guide Teoriche
  • Guide varie
  • iPad
  • Le nostre applicazioni
  • Libri e manuali
  • Materiale OpenSource
  • News
  • Pillole di C++
  • Progetti completi
  • Risorse utili
  • Strumenti di Sviluppo
  • Swift
  • Tips & Tricks
  • Tutorial Pratici
  • Video Tutorial
  • Windows Phone

Siti Amici

  • Adrirobot
  • Allmobileworld
  • Apple Notizie
  • Apple Tribù
  • Avvocato360
  • Blog informatico 360°
  • bubi devs
  • fotogriPhone
  • GiovaTech
  • iApp-Mac
  • iOS Developer Program
  • iPodMania
  • MelaRumors
  • Meritocracy
  • SoloTablet
  • TecnoUser
  • Privacy & Cookie Policy
©2009-2018 devAPP - All Rights Reserved | Contattaci
devAPP.it è un progetto di DEVAPP S.R.L. - Web & Mobile Agency di Torino
Str. Volpiano, 54 - 10040 Leini (TO) - C.F. e P.IVA 11263180017 - REA TO1199665 - Cap. Soc. € 10.000,00 i.v.

devACADEMY.it

Vuoi imparare a programmare?

Iscriviti e accedi a TUTTI i corsi con un’unica iscrizione.
Oltre 70 corsi e migliaia di videolezioni online e in italiano a tua disposizione.

ISCRIVITI SUBITO