[Guida] Come creare applicazioni per la distribuzione “ad-hoc”

Uno dei passaggi chiave nella creazione di applicazioni per iPhone (e non solo) è il testing. Arrivati quasi alla fine dello sviluppo, infatti, sorge la necessità di testare a fondo la nostra applicazione, per scoprirne bug o testarne le funzionalità.

Spesso sorge anche la necessità di inviare l’applicazione “beta” ad altre persone, magari ad alcuni beta tester. Come fare, quindi, a distribuire l’applicazione ad altre persone?

Eccovi una guida passo-passo, che vi spiegherà come creare una versione ad-hoc della vostra applicazione, in modo che possiate distribuirla ad altre persone.

Nota: per seguire questa guida è necessario essere iscritti all’iPhone Developer Program, quindi chi non ha la licenza da sviluppatore non potrà fare ciò che viene spiegato di seguito.

1. Creiamo i certificati necessari

La prima cosa da fare è creare i certificati necessari. Andiamo nel nostro “iPhone Developer Program Portal” (dopo esserci loggati nel sito iPhone Dev Center) e nella sezione “Certificates” creiamo un certificato per la distribuzione:

Spostiamoci, poi, in “Provisioning” e creiamo un profilo che includerà gli UUID dei dispositivi a cui vogliamo inviare la nostra applicazione (trovate qui una guida su come ricavare l’UUID di un iPhone / iPod Touch). Anche in questo caso dobbiamo creare un profilo per la distribuzione:

Dopo aver creato entrambi i certificati, scarichiamoli nel nostro Mac e trasciniamoli in XCode. Se andiamo ora nell’Organizer (“Window -> Organizer”) dovremo vedere che il nuovo profilo è stato aggiunto:

Assicuratevi che non ci sia nessun messaggio di errore o di warning, altrimenti potreste avere problemi nei passaggi successivi.

2. Impostiamo i settaggi necessari

Dobbiamo, ora, impostare vari parametri nelle proprietà della nostra applicazione.

Entriamo nelle proprietà del nostro progetto, e spostiamoci subito nella sezione “Configurations”. Qui duplichiamo il profilo “Release” e rinominiamolo in “Distribution”.

Spostiamoci in “Build” e dal menù a tendina “Configuration” scegliamo la voce “Distribution” (quella che abbiamo appena creato).

Scendiamo poi fino alla sezione “CodeSigning” e nella voce “Code Signing Identity” assicuriamoci che sia selezionato “Any iPhone OS Device” e dal menù a tendina selezioniamo il certificato che abbiamo in precedenza caricato (quello per la distribuzione ad hoc).

È indispensabile selezionare il certificato corretto, altrimenti quando andrete a distribuire la vostra applicazione chi la riceve non riuscirà a sincronizzarla correttamente.

Usciamo dalle proprietà e creiamo un nuovo file all’interno del nostro progetto (“File -> New file…”). Dalla sezione “Code Signing” selezioniamo “Entitlements” come tipo di file e chiamiamolo “Entlitements.plist”.

Selezioniamo dal progetto il file che abbiamo appena creato e togliamo la spunta alla voce “get-task-allow” che troviamo al suo interno.

Torniamo nelle proprietà del progetto e nella voce “Code Signing Entitlements” inseriamo i valore “Entitlements.plist” (ovvero il nome del file che abbiamo appena creato.

Abbiamo quasi concluso. Usciamo dalle proprietà e prima di compilare l’applicazione assicuriamoci di selezionare “Device” e “Distribution” nella configurazione della compilazione:

Siamo pronti per compilare!

3. Compiliamo e distribuiamo l’applicazione

Dal menù “Build” selezioniamo “Build”, avremo così compilato al nostra applicazione, che potremo distribuire!

Per ricavare l’eseguibile da distribuire ci basterà fare clic con il tasto destro sul file “.app” che apparirà nella cartella “Products” del nostro progetto, e selezionare poi “Reveal in Finder”

Ricordatevi, infine, che quando passate ai vostri tester l’applicazione dovete anche inviargli il certificato “*.mobileprovision”, indispensabile perchè possano sincronizzare l’applicazione con iTunes.

Se notate degli errori o delle imperfezioni segnalatemele nei commenti!


La guida è stata scritta e testata da Andrea Busi per BubiDevs, partendo dalla documentazione ufficiale Apple.

Andrea Busi | @bubidevs

Laureato in Ingegneria Informatica, ho fondato nel 2008 questo piccolo blog, in cui racconto le mie esperienze e i miei pensieri sul mondo dell'informatica. Nella vita mi occupo di sviluppo software, e nel tempo libero continuo a coltivare la mia passione per il mondo iOS.

"ommenti a “[Guida] Come creare applicazioni per la distribuzione “ad-hoc”

  1. Spinoricky ha detto:

    Grazie Bubi! Leggerò la guida più tardi, adesso non posso!

  2. FulvioX ha detto:

    Grazie mille. Molto utile come al solito. Spero di poterla utilizzare a breve. 🙂 Sarebbe bello avere un paio di righe aggiuntive che descrivano anche i passi che deve seguire il beta tester ricevendo l’app ed il mobileprovision per avere la beta sul suo dispositivo. Così, giusto per completezza. Thanks

  3. Andrea Busi ha detto:

    @FulvioX: l’ho spiegato nell’ultimo punto, forse troppo velocemente xD
    basta cmq trascinare entrambi i file in iTunes.. appena ho tempo correggerò l’ultimo paragrafo cmq 😉

  4. FulvioX ha detto:

    @Andrea Busi: OK. Un semplice drag and drop. Grazie ancora Andrea.

  5. andrea ha detto:

    ciao, ma quindi, creo un certificato con UIID del tester, poi lo scarico sul mio pc e compilo com distribution ma con quel certificato?? perchè son 2 giorni che ci provo ma nada de nada….

  6. Andrea Busi ha detto:

    @andrea: ciao! esatto, io ho fatto al procedura spiegata nella guida e non ho avuto problemi..

    Che errore hai di preciso?

  7. andrea ha detto:

    mi dice, “non posso sincronizzare iphone, non trovo il documento richiesto” gli ho passato il certificato creato con il suo UIID ma continua a darmi questo problema…

  8. Sile ha detto:

    Sono appena arrivato sul mondo Mac… grazie infinite per i tuoi tutorial ! Per uno che proviene dal visualbasic è tutto un altro pianeta.. ma voglio imparare ! 🙂 anche se l’inglese è una grande lacuna 🙁
    vorrei fare una domanda banale : in che modo devo modificare il file zzzz-info.plist per inserire il mio nome ed il nome della mia applicazione prima di pubblicarlo su apple store? ci sono particolati cose a cui devo prestare grande attenzione (tipo compilare in modo esatto alcuni form o voci specifiche ) al fine di pubblicare il mio primo programmino senza omettere nulla o fare casini ?

    Grazie

  9. Sile ha detto:

    Sono sempre io 🙂
    Ecco il primo bel problemone : apparte che non riesco a tirar fuori il file ipa da inviare ad Apple.. ma comunque seguendo il vostro tutorial alla fine ricevo questo errore ” A valid signing identity matching this profile could not be found in your keychain”….
    E’ evidente che chi già conosce l’ambiente di sviluppo Xcode, segue bene le spiegazioni, ma chi è a zero, anche il semplice dire “collega da li a la” senza un vero dettaglio “step to step”è davvero critico, e non banale come apparte a chi lo insegna.

    p.s. riuscirò nell’impresa faraonica della mia prima applicazione ? 🙂

    Help ! Help ! Help ! 🙂

  10. Andrea Busi ha detto:

    @Sile: ciao.. una delle prossime guide sarà proprio la procedura passo-passo per inviare un’applicazione ad Apple, però devo trovare il tempo di farla..

    per quanto riguarda il tuo errore, ad Apple non devi inviare nessun file .ipa, ma il tuo .app e le varie cose che ti richiede (ad es le icone).

    per l’errore che ti da non saprei, prova a seguire nuovamente la guida, hai sicuramente saltato qualche passaggio 😉

  11. Sile ha detto:

    Grazie per la risposta. Mi potresti indicare l’url esatto da dove inviare la mia applicazione ad Apple (dopo aver fatto ovviamente il login) ?
    Perche dove sono “capitato” io, potevo inserire solo file zip o ipa. Sicuramente chissà dove sono arrivato, tra un tutorial ed un altro sto davvero impazzendo sforzandomi comunque di capire, spero 🙂

    Grazie ancora !

  12. Sile ha detto:

    Nulla da fare… il problema non è il link per inviare il programma.. a quanto pare ancor anon sono riuscito a risolvere il problema con il messaggio “A valid signing identity matching this profile could not be found in your keychain”.. quindi credo sia quello il motivo perche mi dice che il file non è valido e/o mancante del certificato..
    Probabile che mi manca di fare “l’upload device” (con il file txt che non so dove trovare…) , anche se stranamente per sviluppare applicazione mac-iphone funziona tutto regolarmente?…
    Sarà anche potentissimo questo Xcode, ma le procedure per fare cose banali sono davvero tante ed assurde come complicazione.. più facile rimediare il pass per entrare a Langlay 😉

  13. FulvioX ha detto:

    Ciao Andrea. Ho utilizzato gran parte della tuo utilissimo tutorial. Evidentemente le istruzioni saranno disponibili da qualche parte ma averle così, pronte all’uso, è sempre una gran comodità anche perché alcuni passaggi sono tutt’altro che intuitivi. Piccola aggiunta per non perdere il filo è segnalare che xcode deve essere settato per il device e non sul simulatore altrimenti i nuovi certificati non compaiono e neppure la voce “Code Signing Entitlements”. Magari era ovvio ma io mi ci sono perso un attimo. Comunque ancora grazie. Missione compiuta e betatesting avviato. Alla prossima. Ciao Fulvio

    PS: ma serve un certificato per ogni device o si possono includere più devices per certificato? Thanks

  14. Andrea Busi ha detto:

    @FulvioX: grazie della precisazione 😉

    comunqu certamente, un certificato può includere più devices, fino ad un massimo di 100 (il limite per la licenza standard)..

  15. FulvioX ha detto:

    @Andrea Busi: Immaginavo. Basta quindi aggiornarlo aggiungendo la nuova device. Grazie mille. Fulvio

  16. Sile ha detto:

    Forse sono alla meta… sembrerebbe che ora i certificati sono OK (Apple e Ad Hoc..) , mi rimane ancora un “errore”, ovvero in Code-Signig, quando seleziono il mio rpfilo, sotto mi appare il messaggio : The name(“common name”) of a valid code-signing certificare in a keychain within your keychain poath. A missing or invelid certificare will cause a buld error. [CODE_SIGN_IDENTITY]

    Eppure io ho selezionato “iPhone Distribution: mionome…”
    che ora è in neretto (quindi immagino valido), mentre nei giorni scorsi prima di aver ripetuto la procedura dei certificati era in grigio chiaro..
    Devo par caso dare dei nomi scpecifici quando creo il profilo Distribuition App Store o Ad Hoc ???

    Grazie, e perdonatemi per le infinite domande, ma evidentemente leggendo molti altri forum non sono il solo ad avere questi problemi.

  17. ikaroweb ha detto:

    Grazie mille!
    Mi è servita molto, visto che sul sito apple non è che si capisca tanto.
    Dopo un po di sbattimanto sono riuscito a fare il tutto e a installare l’app anche sul mio iphone con certificato developer. 😉

  18. Fausto ha detto:

    Ciao
    Ho seguito questa utilissima guida e sono riuscito a generare tutto. Mi resta solo un piccolo problema, dopo aver trascinato l’app ed il file di profilo dentro ad iTunes durante la sincronizzazione con il dispositivo mi si presenta il seguente errore:
    “L’applicazione ‘nome app’ non è stata installata su iPod ‘nome device’ perchè ne sono state modificate le risorse”
    Dove ho sbagliato?
    Grazie.

  19. Andrea Busi ha detto:

    @Fausto: ciao, davvero strano come errore, non mi è mai capitato.. non è che hai messo qualche lmitazione su qualche tipo di device?

  20. Fausto ha detto:

    Ciao Andrea
    il mistero mi si infittisce. Ho registrato sul portale un nuovo device (questa volta un iPhone) e tutto è filato liscio.
    Verificherò il mio iPad se ha qualche problema
    Grazie ancora.

  21. Fausto ha detto:

    Scusa, il riferimento non era all’iPad ma ad un iPod

  22. ikaroweb ha detto:

    Ho seguito alla lettera il tutto ma quando passo l’applicazione e il certificato ai miei amici non riescono a installare l’applicazione.
    Itunes dice che il certificato non è valido.
    Come risolvo?

  23. Andrea Busi ha detto:

    @ikaroweb: buh, assicurati di fare tutto correttamente, perchè io ho inviato molte volte applicazioni ad altri con questa procedura e funziona senza problemi..

  24. ikaroweb ha detto:

    @andrea busi
    sto provando da diversi giorni ormai, il certificato non credo sia sbagliato in quanto c’è poco da sbagliare nel crearlo.
    cosa posso fare?
    ho seguito passo passo la guida diverse volte partendo da zero ma nisba.
    quando invio l’app ai miei amici mi dice che il firmatario non è valido.

  25. angelo ha detto:

    ciao
    sto impazzendo vicino al mac, ma mi blocca proprio all’inizio.
    Non riesco a creare il CSR ho fatto tutto quello che si doveva fare ma nulla!
    Ho pagato 99 dollari a questi e mi blocca proprio all’inizio. Ho seguito passo passo: 1 andare in Accesso portachiavi, attento che quelle 2 cose in preferenze siano disabilitate, richiedere certificato etc etc.
    Poi quando lo vado a submit sul sito di apple developer mi dice ke non è valido!
    PERCHE’!!! PERCHE’!!!PERCHE’????

  26. Luca ha detto:

    Ciao, oltre essere registrati sull’iPhone Developer Program , si deve anche avere un Iphone/IPad per pubblicare sull’App Store?

  27. Andrea Busi ha detto:

    @Luca: Ciao! No, per pubblicare su AppStore non è richiesto nessun device, basta semplicemente un Mac e la apposita licenza developer 😉

  28. Luca ha detto:

    Ciao! ho ancora qualche problema..ma apparte dare il certificato, bisogna fare qualcosa, tipo registrare l’applicazione, su ITunes? 🙂

  29. Andrea Busi ha detto:

    @Luca: No, per la distrubuzione ad-hoc non devi registrarla nel portale, una volta certificata puoi distribuirla come meglio ti pare 😉

  30. Sil ha detto:

    Leggendo molti post vedo che è un operazione assai difficile quella di creare un App e distribuirla anche solo sul proprio Iphone, mentre la programmazione della stessa App tramite XCode non presenta affatto tutte queste difficoltà anche per un principiante con poche esperienze in programmazione.
    E possibile adattare questa Guida per il nuovo X-Code 4.5 ? Perche anche seguendo passo passo questa guida, a me come credo a molti altri risulta IMPOSSIBILE procedere, ed il Code-Signing sembra oramai diventato l’incubo di tutti i principianti che spendono intere giornate a cercare invano una soluzione al problema. Se ci fosse una GUIDA esaustiva in merito anche a pagamento credo che sarebbero molti ad aderire all’iniziativa, perche altrimenti davvero non se ne esce 🙂 A volte penso che l’idea del code-signing sia un modo per fare una scrematura dei programamtori tramite Q.I., se penso che sono mesi che ci provo, il mio Q.I è pari a zero 😉

  31. mdjaxx ha detto:

    Ciao Forse sono un po in ritardo ma sviluppo solo da pochi mesi e adesso ho l’esigenza di installare un app sull ‘iphone di un potenziale cliente, la mi domanda è questa:
    una volta fatto tutto quello che hai spiegato (molto bene e sicuramente ci riuscirò)
    se io dopo una settimana questa app l’ho migliorante e voglio fargli vedere la nuova release, basta che gli mando il nuovo file dell’ app ho bisogna ogni volta chiedere a apple un certificato nuovo. e se il numero da 100 diventa 99 per la distribuzione ….e cosi via grazie!!? spero di essermi spiegato bene …grz!!

    1. Andrea Busi ha detto:

      Ciao, una volta che crei un certificato lo utilizzi per tutte le versioni dell’applicazione. Dovrai solo aggiornarlo se aggiungi o rimuovi dispositivi, ma il certificato sarà sempre quello 🙂
      PS: il limite di 100 si riferisce ai dispositivi che puoi registrare, non al numero di certificati

  32. mdjaxx ha detto:

    ciao BUBI, volevo farti un altra domanda , riguardo le push notification,:una volta che io abilito un app alle PUSH NOTIFICATION e la installo solo sul mio iphone e per esempio su l iphone del cliente (per provarla e convincersi di comprarla) e faccio tutta la trafila dei cerificati etc, se poi magari dopo un mese la mando all’Apple store devo rifare tutta la trafila oppure rimane abilitata tranquillamente, e se è si a cosa devo stare attento quando la mando all Apple store per far si che rimanga tutto attivato…. grazie 1000.
    ciao Mdjaxx

    1. Andrea Busi ha detto:

      Quando la mandi sull’AppStore dovrai creare un nuovo certificato, di tipo Distribution (mentre quello che utilizzi per il testing e il debug è di tipo Development).
      La procedura, comunque, rimane la stessa!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

*