C'è un motivo tecnico per cui non puoi sviluppare app iOS su un computer Linux?


23

Capisco perché non è possibile sviluppare app OS X su un computer Linux, ma esiste un buon motivo tecnico per cui non è possibile sviluppare app per iPhone e iPad su Linux? Perché non è possibile compilare il codice sorgente iOS in un eseguibile iOS ed eseguirlo in un simulatore iOS su Linux o installarlo su un dispositivo iOS di sviluppo?

È solo perché l'IDE XCode è un'applicazione Cocoa?

A quanto pare, puoi sviluppare app Android su qualsiasi tipo di piattaforma. Non vedo perché lo stesso non possa valere per iOS.


29
Immagino che la risposta a questa domanda, purtroppo, sarà "no; Apple l'ha appena detto".
Jon Purdy,

11
domanda chiusa per "blasfemia";)
thorsten müller il

1
Su una nota a margine, è possibile ottenere la macchina "Mac Mini". È economico per non parlare che è davvero una macchina eccellente.
Chirone,

2
@La leggenda del 1982: ho interpretato male la macchina del tempo come macchina del tempo e ho vissuto un istante di simultanea eccitazione e disprezzo da parte di Apple per Apple.
Jon Purdy,

@Jon Purdy Well Apple offre "Time Machine" e "Time Capsule" :)
Chiron

Risposte:


17

Mac OS X può essere eseguito solo contrattualmente su hardware Apple. iOS richiede il framework Cocoa e l'accesso a un Mac per firmare il portachiavi. Sebbene sia possibile utilizzare Objective-C su Linux utilizzando le librerie OpenStep, non è possibile eseguire il push delle applicazioni sviluppate su iOS a causa della mancanza delle librerie API Cocoa corrette e mentre è possibile eseguire il push su un dispositivo jailbroken senza portachiavi con uno sviluppatore completo account, per vendere detta app o anche per farla scaricare dal pubblico, devi giocare secondo le regole di Apple.


17
"Mac OS X può essere eseguito legalmente solo su hardware Apple" - Sarei molto sorpreso se ciò fosse vero in qualsiasi sistema legale sano di mente. Io so per certo che non è vero in Germania, perché Microsoft ha cercato di tirare la stessa bravata, la gente ignorato, Microsoft ha citato in giudizio, e ha perso.
Jörg W Mittag,

4
Lo cambierò in "contrattualmente" per una maggiore precisione.
Ingegnere mondiale il

3
La violazione dei termini del contratto sostanzialmente ti toglie i privilegi di supporto. Apple vuole fornire un buon servizio clienti e il modo più semplice per farlo è limitare lo spazio in cui le cose possono andare storte in primo luogo. Se stai eseguendo il loro sistema operativo su hardware non Apple, sei da solo.
Jon Purdy,

@ JörgWMittag Come ha provato a farlo Microsoft? Non sono a conoscenza del fatto che Microsoft produca hardware in primo luogo.
Nadir Sampaoli,

4
@NadirSampaoli: In Germania, Microsoft vende licenze Windows molto economiche per i costruttori di PC, in modo che possano raggruppare Windows con i loro PC senza aumentare troppo il costo rispetto a un PC senza sistema operativo o con Linux in bundle. L'intenzione è che queste licenze siano preinstallate sui PC. Tuttavia, i costruttori di PC si sono resi conto che potevano vendere quelle licenze separatamente, con un enorme profitto rispetto a quello che avevano pagato per loro, ma comunque molto più economico di Microsoft. Microsoft ha fatto causa per il fatto che quelle licenze potevano essere utilizzate solo con i PC di quei costruttori, ma hanno perso.
Jörg W Mittag,

17

Non esiste un motivo tecnico particolare, ma gli strumenti di sviluppo forniti da Apple funzionano solo su Mac e non vedo che hanno fretta di cambiarlo.

Per quanto riguarda gli strumenti di sviluppo di terze parti, ad Apple non piacciono molto pubblicamente e dato il potere di veto assoluto di Apple su ciò che arriva nell'App Store, non è una grande idea investire un tempo di sviluppo significativo nel realizzarli / usarli.

(Uno degli strumenti di sviluppo - il simulatore iOS - è fortemente legato a MacOS X per validi motivi tecnici. AFAIK è in realtà un sottile involucro tra iOS e le API molto simili di MacOS X, che sarebbe infinitamente più difficile da fare su un altro sistema operativo Dovresti ricominciare da capo e probabilmente finire con qualcosa di cane lento e orribile come l'emulatore Android)


8

Dipende da cosa intendi per "motivo tecnico"

A rigor di termini, non credo ci sia un motivo tecnico per cui le app iOS non possano essere sviluppate su Linux. Richiederebbe un'entità, sia essa Apple o un gruppo di hacker intraprendenti / di talento, per creare una toolchain (compilatori, forse un IDE, qualcosa per ottenerlo al telefono).

Quindi se per "ragione tecnica" intendi "qualcosa di speciale nel Macintosh che è impossibile e che non potrebbe esistere su un'altra piattaforma", allora no, non credo ci sia. Ad esempio, non è necessario alcun chip speciale sul Macintosh necessario per questo.

Se per "ragione tecnica" intendi "qualcosa che mi impedisce di essere in grado di farlo oggi", allora sì, l'intero bit di codice firmato non esiste su Linux e, a meno che Apple non lo porti, allora è il gioco della palla.


4

Penso che dovrebbe dire che puoi sviluppare per iOS su altre piattaforme, non puoi semplicemente creare applicazioni finali su di esse.

È stato spiegato nella risposta accettata perché non è possibile creare al di fuori di OS X, ma ci sono molti strumenti di sviluppo che ti consentono di scrivere app iOS su altre piattaforme.

Alcuni degli strumenti di sviluppo che ho usato che consentono questo:

  • Qt Framework (C ++ e Qml): le applicazioni possono essere scritte in Windows o Linux, quindi l'applicazione iOS è costruita con XCode su OS X.

  • Unity3D (C #, UnityScript e Boo): è possibile sviluppare su Windows e per creare un iOS su entrambe le piattaforme si genera un progetto XCode. Ciò consente inoltre un'ulteriore integrazione con altri codici Objective-C.

  • Xamarin (C #): è possibile sviluppare su Windows (e credo Linux) e utilizzare una macchina OS X come host di build.

  • Kivy (Python): genera anche progetti XCode.

E puoi trovare molti altri progetti come questi, soprattutto quando inizi a guardare i framework di app Web ibrida e mobile come Appcelerator.


0

Non vi è alcun motivo tecnico per cui non si sarebbe in grado di sviluppare applicazioni iOS su Linux. In realtà succede già su Windows in Delphi XE. Lì puoi sviluppare le tue app iOS completamente in Windows. L'unica cosa necessaria alla fine è che le tue app devono essere firmate. Questo può essere fatto solo su un mac.


0

C'è un motivo tecnico per cui Xcode non consentirà lo sviluppo di app iOS su altri sistemi.

iOS è simile in molti modi a OS X. Molti dei framework sono identici o molto vicini. Il simulatore iOS lo utilizza per fornire un ambiente di test molto veloce. Quando Xcode compila un'app da eseguire nel simulatore, crea binari x86 che si collegano a framework che si riversano principalmente su framework OS X. Si finisce con una build di debug che viene eseguita in modo nativo sul Mac, con prestazioni eccezionali.

Se guardi Android, crea apk indipendenti dalla piattaforma che vengono quindi emulati in un emulatore Android o in un altro. Questo esegue una macchina virtuale che esegue l'intero stack Android per il debug. Esistono emulatori che sono più veloci di altri, ma sono tutti molto più lenti del simulatore. Il vantaggio, tuttavia, è che sono multipiattaforma.

Affinché Apple possa consentire la creazione di app iOS su altri sistemi, dovrebbero portare i framework su quei sistemi operativi in ​​modo da poter scrivere un simulatore o dovrebbero creare un emulatore. Ognuno di questi sarebbe un pezzo di lavoro che richiederebbe tempo lontano dalla costruzione di nuove funzionalità.


0

Sebbene non sia possibile firmare applicazioni per iOS su Linux e quindi distribuirle attraverso i metodi accettati, è possibile sviluppare (con le stesse API) su Linux utilizzando Theos. Questa è la toolchain utilizzata dalla comunità di jailbreak per sviluppare app per iOS ed è multipiattaforma. Se il tuo dispositivo iOS è jailbreak, credo che sarai in grado di inviare l'applicazione compilata al tuo dispositivo tramite libimobiledevice, ma qualcuno potrebbe correggermi se sbaglio.

Qualche informazione in più: http://iphonedevwiki.net/index.php/Theos

Ho intenzione di provarlo nel prossimo giorno e fornirò aggiornamenti.


1
Aggiornamenti per favore!
Kyle Strand,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.