¿Hay alguna razón técnica por la que no puedes desarrollar aplicaciones iOS en una computadora Linux?

23

Entiendo por qué no puede desarrollar aplicaciones OS X en una computadora con Linux, pero ¿hay alguna buena razón técnica por la que no pueda desarrollar aplicaciones para iPhone y iPad en Linux? ¿Por qué no es posible compilar el código fuente de iOS en un ejecutable de iOS y ejecutarlo en un simulador de iOS en Linux o instalarlo en un dispositivo iOS de desarrollo?

¿Es solo porque XCode IDE es una aplicación de Cocoa?

Parece que puedes desarrollar aplicaciones de Android en cualquier tipo de plataforma. No veo por qué lo mismo no puede ser cierto para iOS.

dan
fuente
29
Me imagino que la respuesta a esta pregunta, lamentablemente, será "no; Apple acaba de decirlo".
Jon Purdy
11
pregunta cerrada por "blasfemia";)
thorsten müller
1
En una nota al margen, puede obtener la máquina "Mac Mini". Es barato sin mencionar que es realmente una buena máquina.
Quirón
2
@The Legend of 1982: interpreté mal la máquina fina como máquina del tiempo , y experimenté un instante de entusiasmo juvenil y desprecio simultáneo de Apple.
Jon Purdy
@ Jon Purdy Well Apple ofrece "Time Machine" y "Time Capsule" :)
Chiron

Respuestas:

17

Mac OS X solo se puede ejecutar contractualmente en Apple Hardware. iOS requiere el marco Cocoa y tener acceso a una Mac para firmar el llavero. Si bien puede usar Objective-C en Linux usando las bibliotecas OpenStep, no puede enviar las aplicaciones que desarrolla a iOS debido a la falta de las bibliotecas correctas de la API de Cocoa y puede empujar a un dispositivo con jailbreak sin llaveros con un desarrollador completo cuenta, para vender dicha aplicación o incluso para que el público la descargue, debe seguir las reglas de Apple.

Ingeniero mundial
fuente
17
"Mac OS X solo puede ejecutarse legalmente en Apple Hardware". Me sorprendería mucho si eso fuera cierto en cualquier sistema legal sensato. Yo que es un hecho que no es cierto en Alemania, ya que Microsoft trató de tirar del mismo truco, la gente lo ignoraron, Microsoft demandó, y perdió.
Jörg W Mittag
44
Lo cambiaré a "contractualmente" para mayor precisión.
Ingeniero mundial
3
Violar los términos del contrato básicamente solo lo despoja de los privilegios de soporte. Apple quiere proporcionar un buen servicio al cliente, y la forma más sencilla de hacerlo es limitar el espacio en el que las cosas pueden salir mal en primer lugar. Si está ejecutando su sistema operativo en hardware que no es de Apple, está solo.
Jon Purdy
@ JörgWMittag ¿Cómo intentó Microsoft hacer eso? No sé si Microsoft hace hardware en primer lugar.
Nadir Sampaoli
44
@NadirSampaoli: en Alemania, Microsoft vende licencias de Windows muy baratas a los fabricantes de PC, para que puedan agrupar Windows con sus PC sin aumentar demasiado el costo en comparación con una PC sin sistema operativo o con Linux incluido. La intención es que estas licencias estén preinstaladas en las PC. Sin embargo, los fabricantes de PC se dieron cuenta de que podían vender esas licencias por separado, con una gran ganancia en comparación con lo que pagaron por ellas, pero aún mucho más barato que Microsoft. Microsoft demandó alegando que esas licencias solo podían usarse con las PC de esos constructores, pero se perdieron.
Jörg W Mittag
17

No hay una razón técnica particular, pero las herramientas de desarrollo que Apple proporciona solo se ejecutan en Mac, y no veo que tengan ninguna prisa por cambiar eso.

Con respecto a las herramientas de desarrollo de terceros, a Apple no le gustan públicamente, y dado el poder de veto absoluto de Apple sobre lo que tiene en la App Store, no es una gran idea invertir un tiempo de desarrollo significativo en su fabricación / uso.

(Una de las herramientas de desarrollo, el Simulador de iOS, está muy ligada a MacOS X por razones técnicas sólidas. AFAIK es en realidad una envoltura delgada entre iOS y las API de MacOS X muy similares, que sería infinitamente más difícil de hacer en otro sistema operativo Tendría que comenzar de nuevo desde cero y probablemente terminar con algo tan lento y horrible como el emulador de Android)

grahamparks
fuente
8

Depende de lo que entiendas por "razón técnica"

Estrictamente hablando, no creo que haya una razón técnica por la que las aplicaciones de iOS no se puedan desarrollar en Linux. Se requeriría alguna entidad, ya sea Apple o un grupo de hackers emprendedores / talentosos, para crear una cadena de herramientas (compiladores, tal vez un IDE, algo para obtenerlo en el teléfono).

Entonces, si por "razón técnica" te refieres a "algo especial sobre el Macintosh que es imposible y no podría existir en otra plataforma", entonces no, no creo que exista. No hay un chip especial en Macintosh que sea necesario para esto, por ejemplo.

Si por "razón técnica" quieres decir "algo que me impide poder hacerlo hoy", entonces sí, todo el bit de código firmado no existe en Linux y, a menos que Apple lo transfiera, ese es el juego de pelota.

Tom Kidd
fuente
4

Creo que debería decir que puedes desarrollar para iOS en otras plataformas, simplemente no puedes construir aplicaciones finales en ellas.

Se ha explicado en la respuesta aceptada por qué no puede compilar fuera de OS X, pero hay muchas herramientas de desarrollo que le permiten escribir aplicaciones iOS en otras plataformas.

Algunas de las herramientas de desarrollo que he usado que permiten esto:

  • Qt Framework (C ++ y Qml): las aplicaciones se pueden escribir en Windows o Linux, luego la aplicación iOS se crea con XCode en OS X.

  • Unity3D (C #, UnityScript y Boo): puede desarrollar en Windows y, para generar un iOS en cualquier plataforma, genera un proyecto XCode. Esto también permite una mayor integración con otro código Objective-C.

  • Xamarin (C #): puede desarrollar en Windows (y creo que Linux) y utilizar una máquina con OS X como host de compilación.

  • Kivy (Python): también genera proyectos XCode.

Y puede encontrar muchos más proyectos como estos, especialmente una vez que comience a buscar marcos de aplicaciones web híbridas y móviles como Appcelerator.

Selali Adobor
fuente
0

No hay ninguna razón técnica para no poder desarrollar aplicaciones iOS en Linux. De hecho, ya sucede en Windows en Delphi XE. Allí puede desarrollar sus aplicaciones ios totalmente en Windows. Al final, lo único que se necesita es que sus aplicaciones deban estar firmadas. Esto solo se puede hacer en una Mac.

Pieter B
fuente
0

Hay una razón técnica por la que Xcode no permitirá el desarrollo de aplicaciones iOS en otros sistemas.

iOS es similar en muchos aspectos a OS X. Muchos de los marcos son idénticos o muy cercanos. El simulador de iOS hace uso de eso para proporcionar un entorno de prueba muy rápido. Cuando Xcode compila una aplicación para que se ejecute en el simulador, crea binarios x86 que se vinculan con los marcos que en su mayoría se reducen a los marcos de OS X. Terminas con una compilación de depuración que se ejecuta de forma nativa en tu Mac, que tiene un gran rendimiento.

Si observa Android, crea aplicaciones independientes de la plataforma que luego se emulan en un emulador de Android u otro. Esto ejecuta una máquina virtual que ejecuta toda la pila de Android para que pueda depurarla. Hay emuladores que son más rápidos que otros, pero todos son mucho más lentos que el simulador. Sin embargo, el beneficio es que son multiplataforma.

Para que Apple permita que las aplicaciones de iOS se creen en otros sistemas, necesitarían portar los marcos a esos sistemas operativos para poder escribir un simulador, o tendrían que construir un emulador. Cualquiera de los dos sería una gran parte del trabajo que tomaría tiempo para construir nuevas características.

Alan Shutko
fuente
0

Si bien no puede firmar aplicaciones para iOS en Linux, y así distribuirlas a través de los métodos aceptados, puede desarrollar (con las mismas API) en Linux usando Theos. Esta es la cadena de herramientas utilizada por la comunidad jailbreak para desarrollar aplicaciones para iOS, y es multiplataforma. Si su dispositivo iOS tiene jailbreak, creo que podrá enviar la aplicación compilada a su dispositivo a través del dispositivo libimobile, pero alguien puede corregirme si me equivoco.

Alguna información más: http://iphonedevwiki.net/index.php/Theos

Planeo intentar esto al día siguiente más o menos, y proporcionaré actualizaciones.

Sammoore
fuente
1
Actualizaciones por favor!
Kyle Strand