Al contrario di quello che si pensa generalmente per programmare per iPhone non occorre assolutamente possedere un Mac (e neanche un Hackintosh). L’iPhone è un sistema self-hosting ed è quindi possibile scrivere e compilare programmi su di esso senza nessun ausilio esterno .
Premessa:
Questo articolo non è una guida alla programmazione su iPhone o al linguaggio Object-C.
In questo tutorial verrà riportata unicamente la via da seguire per essere in grado, previe le proprie conoscenze, di realizzare programmi per iPhone senza possedere un Mac e non avendo quindi la possibilità di installare xCode.
Lo scopo dell’articolo è quello di sfatare il mito comune del “se hai Windows non puoi programmare per iPhone” e non quello di insegnare un linguaggio di programmazione.
Requisiti:
I requisiti per poter compilare programmi per iPhone sono due:
- Possedere un computer di appoggio (OS X, Windows, Linux…) occorrente per il setup iniziale.
- Essere in grado di lavorare in remoto (copiare/inviare file e comandi) tramite i protocolli SSH e SCP.
Per la seconda operazione è possibile utilizzare i programmi Putty e WinSCP su Windows o in alternativa è possibile ad esempio utilizzare l’applicazione Terminal e Cyberdunk su OS X .
Passo 1: Creare la Toolchain
Il primo passo è creare l’ambiente di sviluppo (la cosiddetta toolchain appunto) sul nostro iPhone. Per fare questo ci viene in aiuto il lavoro realizzato dal grande saurik che si è già occupato di portare una serie di tools fondamentali su iPhone e hostarli nella propria repository (Telesphoreo).
Partiamo quindi aprendo Cydia e installando i seguenti packages:
- L’utility make
- Il compilatore gcc
- L’utility per la firma delle applicazioni ldid (Link Identity Editor – Bypassing iPhone Code Signatures)
Fatto questo occorre portare su iPhone gli headers file contenenti le dichiarazioni degli oggetti disponibili per la programmazione.
Nota:
In linea teorica occorrerebbe scaricare dal sito http://developer.apple.com/iphone/ (previa registrazione gratuita) il pacchetto “iPhone SDK for iPhone OS 2.2.1” (1.7 GB) contenente xCode, Interface Builder, il simulatore e tutti gli altri strumenti per la programmazione “ufficiale” sul proprio Mac, decomprimere il pacchetto .dmg, estrarre gli headers e spostarli nelle cartelle corrette.
Fatto questo occorrerebbe poi aggiungere le API per la chiamata di funzioni non documentate ed eventualmente altri headers per librerie esterne.
Una guida completa su come realizzare questo è disponibile qui e come secondo passo qui ed è fondamentale conoscere questi passaggi per aggiornare in futuro autonomamente la propria toolchain.
Noi per semplificare gli utenti abbiamo riportato tutto il necessario a questo link:
Una volta finito il download decomprimiamo il pacchetto e trasferiamo (tramite SCP) la cartella include sull’iPhone nel percorso /private/var, in modo da avere tutti i file .h e le sottocartelle al percorso completo /private/var/include.
Passo 2: Realizzare una applicazione
Volendo da ora in poi, come accennato all’inizio, sarebbe possibile programmare e compilare utilizzando unicamente l’iPhone. Tutto quello che sarà visto è infatti sostituibile da comandi come nano, mv e cp lanciati dall’applicazione MobileTerminal per chi è in grado di lavorare su shell (ma comunque molto scomodo date le ridotte dimensione dello schermo).
Per realizzare un programma è necessario conoscere il linguaggio di programmazione adatto (in questo caso Object-C o oppure almeno il C) ed utilizzare un qualsiasi editor di testo (consigliato notepad++).
Conoscendo il linguaggio C/C++ è possibile realizzare semplici applicazioni funzionanti da terminale (come in questo esempio) oppure anche demoni (questo verrà visto in un prossimo articolo). Nel caso si conosca l’obj allora non esistono limiti ed è possibile realizzare senza troppa fatica anche applicazioni grafiche.
Corso interattivo di programmazione per iPhone: I Lezione
Corso interattivo di programmazione per iPhone: II Lezione
Svantaggi:
La programmazione grafica utilizzando la toolchain risulta la cosa più difficile: non disponendo di Interface Builder occorre conoscere bene gli oggetti messi a disposizione dai framework Apple e soprattutto posizionarli a “mano” nello schermo dell’iPhone. In pratica bisogna fare tutto via codice.
Vantaggi:
Tramite questo metodo è possibile utilizzare anche tutta la parte delle funzioni dei framework che la Apple non ha reso ufficialmente pubblica e di conseguenza non esistono limiti sugli oggetti utilizzabili. (ovviamente utilizzando funzioni private non è possibile pubblicare su Appstore).
Passo 3: Compilazione
Come esempio per la compilazione utilizziamo il codice sorgente dell’applicazione di esempio MyApp scaricabile da qui.
Si tratta di un semplice “HelloWorld”grafico ben commentato e comprensivo di makefile facilmente utilizzabile come codice di partenza per realizzare applicazioni più complesse.
Finito il download decomprimiamo il pacchetto e trasferiamolo sull’iPhone (usando i programmi per la copia in SCP). Per semplicità limitiamoci a copiarlo nella directory di default dopo una connessione: /private/var/root in modo da avere il codice sorgente sotto /private/var/root/MyApp.
Fatto questo utilizziamo il terminal remoto per connetterci, navigare all’interno della directory giusta e lanciare il comando di compilazione:
- Apriamo Putty (o Terminal) e connettiamoci all’iPhone
- Login root, password alpine
- Lanciamo il comando cd MyApp per spostarci all’interno della directory desiderata
- Lanciamo il comando make package per compilare, firmare e installare l’applicazione
Ora è sufficiente un respring (eseguibile con programmi come SBSettings ma anche via terminale con il comando launchctl stop com.apple.SpringBoard) per ritrovare l’applicazione sulla Springboard.
Nota conclusiva:
Questo articolo non è un tutorial di livello base, sono richieste alcune conoscenze preliminari (in quanto molti passi vengono sintetizzati al massimo e non approfonditi come si dovrebbe) e soprattutto un alto livello di capacità individuali per essere in grado di capire da soli come partire da qui per realizzare qualcosa di veramente utile e complesso.
Per la maggior parte degli utenti questa sarà solo una dimostrazione del fatto che la gente sbaglia a dire che senza Mac non si programma per iPhone, ma per chi sarà in grado di proseguire da questo punto per realizzale quello che desiderava spero di aver fatto cosa gradita nel scrivere questa guida.
Guida scritta da Suondmao