Se avete creato un’applicazione utilizzando l’iPhone SDK avrete sicuramente notato che quest’ultima funziona perfettamente nell’iPhone Simulator, ma che è impossibile trasferirla nel vostro iPhone o iPod Touch. Il motivo è molto semplice. Apple, dal nuovo Firmware 2.0.x, permette soltanto l’esecuzione di applicazioni certificate (o firmate). Ottenere un certificato, significa diventare developers a tutti gli effetti, pagando una quota annuale. Ecco quindi una piccola guida che vi aiuterà a firmare le vostre applicazioni (create attraverso i nostri tutorial), e che vi permetterà quindi di installarle sul vostro iPhone e anche su quello degli altri.
Sul blog di Saurik (l’autore di Cydia) troviamo tre differenti metodi per bypassare la signatura del codice. In questo tutoril vi illustrerò il più semplice, ovvero quello che prevede l’utilizzo di LDID, un tool creato dallo stesso Saurik.
Ecco i passi da seguire:
Passo 1) In Xcode, cliccate sul menù a tendina in alto a sinistra, e scegliete l’opzione “Device – iPhone OS 2.X″ (in base alla vostra versione di SDK), ovvero usiamo il nostro iPhone/iPod come dispositivo per la compilazione dell’applicazione. Poco più sotto sceglete “Release”, in modo da avere un’applicazione compilata in maniera ottimale per essere utilizzata.
Passo 2) Cliccate su “Build and Go!” (senza aver connesso il vostro iPhone!) ed otterrete un messaggio di errore. Ecco un paio di errori che potreste avere:
Passo 3) L’applicazione è stata compilata e creata da XCode, che però non è riuscito ad installarla sull’iPhone. Niente di problematico, ci pensiamo noi! Andiamo nella cartella del progetto, in cui vedrete molti diversi file, simili a questo screenshot:
Entrate quindi nella cartella “build”. Noterte anche qui diverse cartelle, simili a queste:
La cartelle di nostro interesse è quella con il nome “Release-iphoneos“. Apriamo tale cartella, noteremo due file al suo interno:
Prendete il primo file (che è in realtà l’applicazione vera e propria) che porta lo stesso nome del vostro progetto (nel nostro caso “my RSS reader”) e copiatela tramite SSH nel nostro iPhone, nella cartella /Applications.
Nota: il simbolo di divieto che vedete sull’icona dell’applicazione è normale, in quanto Mac OS non la riconosce come un’applicazione valida. In effetti è un’applicazione, ma per l’OS dell’iPhone!
Passo 4) Avete così messo la vostra applicazione sull’iPhone. Respringate o riavviate l’iPhone, e vedrete l’icona dell’applicazione sulla SpringBoard. Provate ad avviarla.. crasherà subito! Questo perchè l’applicazione non è stata certificata. Ecco che ora ci serve il tool LDID. Aprite Cydia e installate i seguenti package:
- MobileTerminal
- LDID “Link Identity Editor”
Passo 5) Ora non ci resta che certificare la nostra applicazione. Uscite da Cydia e aprite MobileTerminal. Per prima cosa autentichiamoci come utenti root. Per fare ciò digitiamo:
su root
Vi verrà poi chiesta la password, che è, come sempre, “alpine”.
Nota: mentre digitate la password non vedrete nessun carattere comparire nel terminale, è tutto normale, questo è tipico dei sistemi Unix.
Passo 6) Ora non ci resta che signare la nostra applicazione ed avremo finito! Sempre da terminale digitate:
ldid -S “percorso_programma”
dove percorso_programma è la directory del file che esegue l’applicazione, quindi nel nostro esempio sarebbe ‘/Applications/my RSS reader.app/my RSS reader’. Il nostro comando è quindi:
ldid -S ‘/Applications/my RSS reader.app/my RSS reader’
Nota: racchiudete il percorso tra virgolette per non aver problema con gli spazi presenti nel path dell’applicazione.
Passo 7) Avete fatto!! Eseguite un Respring tramite un programma come “Respring” (che trovate sempre in Cydia) e sarete pronti ad utilizzare la vostra applicazione!!
23 comments On [GUIDA] Come firmare le applicazione create con SDK per il firmware 2.x e come trasferirle nell’iPhone / iPod Touch
Salve, ho seguito la procedura.. ma quando copio la mia applicazione in /Applications e nonostante riavvii la SpringBoard, non mi viene visualizzata la mia applicazione insieme alle altre.. ho un iPod Touch 2.1
Con cosa hai riavviato la Springboard? Hai usato l’utility Respring?
salve, ho installato l’sdk per il 2.1 e volevo avere qualche informazione maggiore sulle differenze per firmare le applicazioni, si è arrivati a usa soluzione?
tutte le volte che ho provato a compilare selezionando device mi da errore
grazie
ok ora compila e crea la release ho seguito tutti i passi ma quando cerco di aprire la mia applicazione esce dalla schermata di home, fa l’animazione dove appare la status bar solida ma poi ritorna alla home
ma aprire da dove? dal simulatore o direttamente da iPhone/iPod?
dal simulatore viene aperto correttamente mentre dall’iphone crasha subito
nn c’è un modo x verificare se la signature è stata fatta correttamente sulla determinata applicazione?
certo, è anche specificato nella guida..
quando esegui il comando ldid non devi ottenere nessun messaggio d’errore, questo significa che l’app è stata signata correttamente..
se ottieni qualche messaggio d’errore hai sbagliato qualcosa..
nessun messaggio di errore… se nn è la signature e nel simulatore funziona… che altri errori potrebbero esserci?
eheh risolto… avevo i diritti sbagliato sulla app… scusa il disturbo
ma strano..
hai fatto un respring dopo aver fatto la signatura?
se proprio non riesci prova a mandarmi la tua app via mail, che vedo se a me la signa correttamente..
si il respring l’ho fatto solo che la cartella .app aveva diritto 755 ma i file all’interno 644 quindi iniziava a caricare il programma ma poi crashava subito
ah ok!!
quindi hai risolto mi sembra di capire.. ottimo!
ciao, questa guida è valida anke x il 3.0?? io ho provato ma mi da qst errore:
Code Sign error: The identity ‘iPhone Developer’ doesn’t match any valid certificate/private key pair in the default keychain
come faccio ad ottenere i certificati??
@andrea: no, questa guida purtoppo è valida solo per i firmware 2.x..
spero di trovare un metodo uguale e di poter aggiornare la guida al più presto!
hai trovato qualcosa a riguardo? anche io ho lo stesso problema
@dyd_dog: makkè, sembra non esserci ancora niente in rete.. ci tocca aspettare ancora..
🙁 che peccato. Quindi nessuno dei metodi attuali funziona. E’ un problema dell’ SDK 3.0 o del firmware 3.0?