Y a-t-il une raison technique pour laquelle vous ne pouvez pas développer des applications iOS sur un ordinateur Linux?

23

Je comprends pourquoi vous ne pouvez pas développer des applications OS X sur un ordinateur Linux, mais y a-t-il une bonne raison technique pour laquelle vous ne pouvez pas développer des applications iPhone et iPad sur Linux? Pourquoi n'est-il pas possible de compiler le code source iOS dans un exécutable iOS et de l'exécuter dans un simulateur iOS sous Linux ou de l'installer sur un appareil iOS de développement?

Est-ce simplement parce que l'IDE XCode est une application Cocoa?

Vous pouvez développer des applications Android sur n'importe quel type de plateforme, semble-t-il. Je ne vois pas pourquoi il n'en va pas de même pour iOS.

dan
la source
29
J'imagine que la réponse à cette question, malheureusement, sera "non; Apple vient de le dire".
Jon Purdy
11
question fermée pour "blasphème";)
thorsten müller
1
Sur une note latérale, vous pouvez obtenir la machine "Mac Mini". Ce n'est pas cher, sans oublier que c'est vraiment une belle machine.
Chiron
2
@The Legend of 1982: J'ai mal interprété la machine fine comme machine à remonter le temps , et j'ai vécu un moment d'excitation enfantine simultanée et de mépris d'Apple.
Jon Purdy
@Jon Purdy Well Apple propose "Time Machine" et "Time Capsule" :)
Chiron

Réponses:

17

Mac OS X ne peut être exécuté que contractuellement sur le matériel Apple. iOS nécessite le framework Cocoa et d'avoir accès à un Mac pour signer le trousseau. Bien que vous puissiez utiliser Objective-C sous Linux à l'aide des bibliothèques OpenStep, vous ne pouvez pas pousser les applications que vous développez vers iOS en raison du manque de bibliothèques API Cocoa correctes et alors que vous pouvez pousser vers un appareil jailbreaké sans trousseau de clés avec un développeur complet compte, afin de vendre ladite application ou même de la faire télécharger par le public, vous devez respecter les règles d'Apple.

Ingénieur du monde
la source
17
"Mac OS X ne peut être exécuté légalement que sur du matériel Apple" - je serais très surpris si cela était vrai dans un système juridique sain. Je sais pertinemment que ce n'est pas vrai en Allemagne, parce que Microsoft a essayé de faire le même coup, les gens l'ont ignoré, Microsoft a poursuivi et perdu.
Jörg W Mittag
4
Je vais le changer en "contractuellement" pour plus de précision.
World Engineer
3
Violer les termes du contrat vous prive essentiellement de privilèges de support. Apple veut fournir un bon service client, et la façon la plus simple de le faire est de limiter l'espace dans lequel les choses peuvent mal tourner en premier lieu. Si vous exécutez leur système d'exploitation sur du matériel non Apple, vous êtes seul.
Jon Purdy
@ JörgWMittag Comment Microsoft a-t-il essayé de faire cela? Je ne suis pas au courant que Microsoft fabrique du matériel en premier lieu.
Nadir Sampaoli
4
@NadirSampaoli: En Allemagne, Microsoft vend des licences Windows très bon marché aux constructeurs de PC, afin qu'ils puissent regrouper Windows avec leurs PC sans trop augmenter les coûts par rapport à un PC sans OS ou avec Linux fourni. L'objectif est que ces licences soient préinstallées sur les PC. Cependant, les constructeurs de PC ont réalisé qu'ils pouvaient vendre ces licences séparément, avec un énorme bénéfice par rapport à ce qu'ils avaient payé, mais toujours beaucoup moins cher que Microsoft. Microsoft a poursuivi en justice au motif que ces licences ne pouvaient être utilisées qu'avec les PC de ces constructeurs, mais qu'elles avaient été perdues.
Jörg W Mittag
17

Il n'y a pas de raison technique particulière, mais les outils de développement fournis par Apple ne fonctionnent que sur Mac, et je ne vois pas qu'ils soient pressés de changer cela.

En ce qui concerne les outils de développement tiers, Apple les déteste très publiquement, et étant donné le pouvoir de veto absolu d'Apple sur ce qui se trouve dans l'App Store, ce n'est pas une bonne idée d'investir un temps de développement important dans leur fabrication / utilisation.

(L'un des outils de développement - le simulateur iOS - est très fortement lié à MacOS X pour de bonnes raisons techniques. AFAIK c'est en fait un wrapper mince entre iOS et les API MacOS X très similaires, ce qu'il serait infiniment plus difficile de faire sur un autre système d'exploitation. Il faudrait recommencer à zéro et finir avec quelque chose d'aussi lent et horrible que l'émulateur Android)

Grahamparks
la source
8

Cela dépend de ce que vous entendez par «raison technique»

À strictement parler, je ne pense pas qu'il y ait une raison technique pour laquelle les applications iOS ne pouvaient pas être développées sur Linux. Il faudrait une entité, que ce soit Apple ou un groupe de hackers entreprenants / talentueux, pour créer une chaîne d'outils pour cela (compilateurs, peut-être un IDE, quelque chose pour l'obtenir par téléphone).

Donc, si par "raison technique" vous voulez dire "quelque chose de spécial sur le Macintosh qui est impossible et ne pourrait pas exister sur une autre plate-forme", alors non, je ne le pense pas. Il n'y a pas de puce spéciale sur le Macintosh requise, par exemple.

Si par "raison technique" vous voulez dire "quelque chose qui m'empêche de pouvoir le faire aujourd'hui", alors oui, l'intégralité du bit de code signé n'existe pas sur Linux et à moins qu'Apple ne le transfère, c'est le jeu de balle.

Tom Kidd
la source
4

Je pense que cela devrait dire que vous pouvez développer pour iOS sur d'autres plates-formes, vous ne pouvez tout simplement pas créer d' applications finales sur celles-ci.

Il a été expliqué dans la réponse acceptée pourquoi vous ne pouvez pas construire en dehors d'OS X, mais il existe de nombreux outils de développement qui vous permettent d'écrire des applications iOS sur d'autres plates-formes.

Certains des outils de développement que j'ai utilisés permettent ceci:

  • Qt Framework (C ++ et Qml): les applications peuvent être écrites sous Windows ou Linux puis l'application iOS est construite avec XCode sur OS X.

  • Unity3D (C #, UnityScript et Boo): Vous pouvez développer sur Windows et pour construire un iOS sur l'une ou l'autre plate-forme, vous générez un projet XCode. Cela permet également une intégration plus poussée avec d'autres codes Objective-C.

  • Xamarin (C #): Vous pouvez développer sur Windows (et je crois Linux) et utiliser une machine OS X comme hôte de build.

  • Kivy (Python): génère également des projets XCode.

Et vous pouvez trouver de nombreux autres projets comme ceux-ci, en particulier une fois que vous commencez à étudier les cadres d'applications Web hybrides et mobiles comme Appcelerator.

Selali Adobor
la source
0

Il n'y a aucune raison technique pour que vous ne puissiez pas développer des applications iOS sur Linux. En fait, cela se produit déjà sur les fenêtres de Delphi XE. Là, vous pouvez développer vos applications ios totalement dans Windows. À la fin, la seule chose nécessaire est que vos applications doivent être signées. Cela ne peut être fait que sur un Mac.

Pieter B
la source
0

Il y a une raison technique pour laquelle Xcode ne permettra pas le développement d'applications iOS sur d'autres systèmes.

iOS est similaire à bien des égards à OS X. De nombreux cadres sont identiques ou très proches. Le simulateur iOS utilise cela pour fournir un environnement de test très rapide. Lorsque Xcode compile une application à exécuter dans le simulateur, il crée des fichiers binaires x86 qui se lient à des cadres qui se résument principalement aux cadres OS X. Vous vous retrouvez avec une version de débogage qui s'exécute en natif sur votre Mac, qui offre d'excellentes performances.

Si vous regardez Android, il crée des apks indépendants de la plate-forme qui sont ensuite émulés dans un émulateur Android ou un autre. Cela exécute une machine virtuelle qui exécute toute la pile Android pour que vous puissiez la déboguer. Il existe des émulateurs plus rapides que les autres, mais tous sont beaucoup plus lents que le simulateur. L'avantage, cependant, est qu'ils sont multiplateformes.

Pour qu'Apple autorise la construction d'applications iOS sur d'autres systèmes, il lui faudrait soit porter les frameworks sur ces systèmes d'exploitation pour pouvoir écrire un simulateur, soit créer un émulateur. L'un ou l'autre serait un gros morceau de travail qui prendrait du temps à créer de nouvelles fonctionnalités.

Alan Shutko
la source
0

Bien que vous ne puissiez pas signer des applications pour iOS sur Linux, et donc les distribuer via les méthodes acceptées, vous pouvez développer (avec les mêmes API) sur Linux en utilisant Theos. Il s'agit de la chaîne d'outils utilisée par la communauté de jailbreak pour développer des applications pour iOS, et elle est multiplateforme. Si votre appareil iOS est jailbreaké, je pense que vous pourrez pousser l'application compilée sur votre appareil via libimobiledevice, mais quelqu'un peut me corriger si je me trompe.

Quelques informations supplémentaires: http://iphonedevwiki.net/index.php/Theos

Je prévois de tenter le coup le lendemain, et je fournirai des mises à jour.

sammoore
la source
1
Mises à jour s'il vous plaît!
Kyle Strand