02
feb 2009


Creare applicazioni per iPhone senza avere OS X

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 .

iphoneitaliaapp

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:

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:

  1. Apriamo Putty (o Terminal) e connettiamoci all’iPhone
  2. Login root, password alpine
  3. Lanciamo il comando cd MyApp per spostarci all’interno della directory desiderata
  4. Lanciamo il comando make package per compilare, firmare e installare l’applicazione

 

untitled2

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.

untitled3

untitled4

untitled5

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

 

 

Tags: , ,
Giuseppe Migliorino (2 febbraio 2009 8:00)

L'utilizzo del contenuto di questo articolo è soggetto alle condizioni della Licenza Creative Commons. Sono consentite la distribuzione, la riproduzione e la realizzazione di opere derivate per fini non commerciali, purchè venga citata la fonte.
  • Sandro

    scusatemi ma non serve a nulla. Io conoscevo gia questo metodo, e in primis è difficilissimo creare un’applicazione diversa da helloworld degli screenshot, ma poi non puoi ne metterla in appstore, ne nulla.. alla fine il mac serve eccome per fare le app iphone!

  • http://myspace.com/vena_one vena_one

    Il discorso è: si possono violare le restrinzioni dell’SDK E permettere a supergeni dello scripting creare tools quali un visualizzatore flash o comandi vocali per servizi di navigazione??

  • isaak

    ma quindi se scrivo un programma in linguaggio C lo compila e lo esegue tranquillamente?

  • acaonweb

    serve invece, visto che posso con questo modo fare applicazione che violano l’sdk come voglio e poi posso pubblicarle tramite cydia bypassando l’appstore!!!
    A chi sa programmare bene serve solo un editor di testo e un compilatore!!!!

  • Pingback: Creare applicazioni per iPhone senza avere OS X | L'angolo della condivisione

  • Playrom

    Bella guida,ma nn essendo un metodo ufficiale nn e proprio come creare app per iPhone visto che nn puoi metterle sullo store ed e difficilissimo programmare per via testuale…

    Cmq ottimi come al solito ragazzi…

  • Gigi

    @acaonweb: A chi sa programmare bene serve solo un editor di testo e un compilatore!!!!
    Beh, dipende da quello che vuoi o devi fare!!!

  • acaonweb

    guarda, conosco a livello professionale programmatori che programmano in c che le cose a più basso livello le fanno con il notepad… e sto parlando di software industriale, per il controllo di robot/etc

  • http://www.evilsocket.net evilsocket

    concordo con tutti, ma vi assicuro che anche a livello professionale per fare una GUI decente spesso e volentieri si ricorre a interface builders come xcode .

  • Alessandro

    Scusa evilsocket che c’entra? Bho…qui si parla di un’altra cosa, non di come si crea una GUI, comunque secondo me avete fatto bene a pubblicarlo, ho letto da qualche parte che Apple era ingiusta a lasciare spazio solo ai Mac-possessori.

  • Andrix

    grazie…

    sicuramente avere il mac rimane un vantaggio… ma qlke cazzatina qndo ho tempo inizio a farmela!!!

    grandissimi…

  • http://blogiphone.tk mecchi

    ma nn c’è proprio nessun modo per programmare su windows????(qualsiasi cosa)

  • http://www.suondmao.altervista.org Suondmao

    E se compili da iPhone invece che su win cosa ti cambia?
    Comunque un metodo esiste, o esisteva per il vecchi 1.x (non so se funziona ancora per 2.x, non ho provato). Bastava portarsi sul pc le varie librerie dei framework iPhone scompattando l’ipsw e poi lavorare sotto cygwin per compilare, il resto era identico a questa guida.

    Secondo me il metodo della guida è comodo quanto lavorare su win :)

    E comunque per tutti quanti: è possibile tranquillamente realizzare gui complicate anche via codice. Si tratta solo di posizionare controlli e colleragli alle varie azioni, come si faceva una volta prima che venissero fuori tutti i tool grafici per semplificare le cose.
    Certo mettere coordinate a mano non è il massimo, ma con un pò di pratica e di testa si fa tutto tranquillamente.
    Il codice è codice, i limiti stanno nella testa di chi programma.

  • Pingback: iPhone Simulator per Windows - iPhone Italia - Il blog italiano sull’Apple iPhone 3G

  • Pingback: » iPhone Simulator per Windows

  • Hawk

    il link messo in questa guida punta agli incluide i FW 2.2, se ho 2.2.1 son ugualmente validi?

  • http://www.skino.it francesco

    sn riuscito a mette l’applicazione sul mio iphone.
    quando lo eseguo esce la pagina di loading,però poi subito dopo ritorna nella springboard…perchè?:D

  • tonio

    non c’è nssun emulatore mac per windows o linux ?

  • giovanni

    Qualcuno sa indicarmi il modo più semplice per creare un’applicazione iphone che apra semplicemente un collegamento a safari con il mio blog, in modo da rendarla scricabile?…più o meno come su repubblica…

  • http://www.deuxexmachina.it Andrea

    Bè io trovo valida la guida, mi sembra utile per un’analisi preventiva dell’ambiente Iphone.

    Del resto, se devo investire prendere un mac, registrarmi allo store, dovro prima vedere come mi trovo a sviluppare su Iphone?…

  • argiolas93

    ciao scusate ho un problema perchè io cerco gcc su cydia ma nn lo trovo e trovo solo gnu c compiler che però non riesco a installare perchè dice che è dovuto a libgcc……e poi non trovo neanke idid….perchè???

  • Sandro

    Guarda un pò

  • Matte

    Salve ragazzi! Complimenti per il sito!
    Vi spiego qual’è il problema:
    Ho effettuato con redsn0w il jailbreak dell’iPhone 3G OS 3.1.3.
    Ho installato manualmente la libgcc perchè cydia la richiedeva per installare il gcc.
    Fatto questo ho installato make, gcc e ldid.
    Al momento della compilazione il processo crasha, vi posto il log:

    iPhone:~/app root# make package
    /usr/bin/gcc -lobjc -F/System/Library/Frameworks -framework CoreFoundation -framework Foundation -framework UIKit -framework CoreGraphics -L/usr/lib -lc /usr/lib/libgcc_s.1.dylib -bind_at_load -multiply_defined suppress -o InnerboxLab main.o MyAppDelegate.o
    ld: library not found for -lobjc
    collect2: ld returned 1 exit status
    make: *** [InnerboxLab] Error 1
    iPhone:~/app root#

    Non capisco perchè non trova la libreria lobjc.
    Vi ringrazio in anticipo

  • Niccolò

    Scusate ragazzi, io non sono molto esperto ma mi piaceva entrare meglio in questo mondo.. Volevo seguire questa guida, ma alla installazione su cydia del compiler gcc, mi sono fermato! Non me lo installa per problemi di conflitto con qualcosa che non mi ha detto.. Non so se avete in mente la schermata.. Come se ne esce in queste situazioni?? Vi ringrazio tantissimo!

  • http://www.problem-error.com problem

    Complesso da realizzare, ma interessante.
    Grazie dell’aiuto.

  • enrico

    @Matte: anche io ho il tuo stesso problema solo che io posseggo un ipod touch non un iphone

  • cbonato

    qualcuno riesce a postare un nuovo link per il pacchetto che http://www.megaupload.com/?d=EONL52SJ non funziona più

  • http://www.e-potion.com/sito/iphone/realizzazione-applicazioni-iphone.php Brucomela

    Tecnicamente è interessante, in termini pratici se esco dai limiti dell’SDK devo passare per Cydia quindi l’utilità commerciale è limitata.

    Portfolio per realizzazione applicazioni Iphone

  • http://www.e-potion.com/sito/iphone/realizzazione-applicazioni-iphone.php Brucomela

    Tecnicamente interessante, praticamente se esco dai limiti dell’SDK non posso andare su App Store quindi l’utilità commerciale è limitata!

    Portfolio per realizzazione applicazioni Iphone

  • http://powertoserve.info/www.iphoneitalia.com/ www.iphoneitalia.com

    Creare applicazioni per iphone senza avere os x 17521.. Awesome :)

  • http://www.occhioviterbese.it fabio

    Compratevi un cellulare Android meno problemi e più sodisfazioni!

  • http://www.andreacavallaro.net Andrea

    Inutile dal punto di vista commerciale.
    Per quel che mi riguarda, se butto sangue per scrivere del codice, qualche soldino come ricavo non mi dispiacerebbe.

  • Ignazio

    A parte l’inutilità commerciale della cosa….

    Programmare senza un IDE applicazioni cui estetica e interfacce intuitive sono requisito fondamentale è da pazzi.

    Non significa essere bravi o meno bravi, professionisti o no…significa semplicemente che per scrivere un’app completa da solo avrò bisogno di 30 anni senza XCode…

    Io sviluppo software (esclusivamente di livello enterprise) al 90% in c#…senza VS e tecnologie come WPF e WCF ci impiegherei 10 volte il tempo che impiego ora.


Follow iPhoneItalia.com on Twitter



  • iPhone 5, come lo vorresti?

    Risultati

    Loading ... Loading ...

Home | Pubblicità | About | Privacy | Contact | Feed RSS | iPhone View