Puis-je écrire des applications iPhone natives en utilisant Python [fermé]

91

En utilisant PyObjC , vous pouvez utiliser Python pour écrire des applications Cocoa pour OS X. Puis-je écrire des applications iPhone natives en utilisant Python et si oui, comment?

Davidmytton
la source
36
Les développeurs iPhone signalent cette question comme étant obsolète (trop localisée), et les tentatives de résolution de ce problème suscitent également des plaintes selon lesquelles elle est toujours correcte. Donc, si vous êtes ici à la suite d'une recherche, sachez que cette réponse est de 08 et peut ne pas avoir de réponse correcte.
1
Pour expliquer plus en détail: Apple avait une fois une section dans son accord qui listait spécifiquement les langages de programmation autorisés C, C ++, Objective-C et Javascript. Cela a suscité beaucoup de confusion, de doutes et de peur. Finalement, Apple a cessé de nommer les langues. Je sais pertinemment que même pendant que cela était en place, une variété d'applications étaient sur le magasin, en cours de publication ou en développement qui utilisaient le script Lua d'une manière ou d'une autre.
LearnCocos2D

Réponses:

37

Pas actuellement, les seuls langages actuellement disponibles pour accéder au SDK iPhone sont C / C ++, Objective C et Swift.

Il n'y a aucune raison technique pour laquelle cela ne pourrait pas changer à l'avenir, mais je ne retiendrais pas votre souffle pour que cela se produise à court terme.

Cela dit, Objective-C et Swift ne sont vraiment pas trop effrayants ...

2016 Modifier

Javascript avec le framework NativeScript est maintenant disponible.

Dave Verwer
la source
32
J'ai écrit une application iPhone multifonction en Objective-C et une application Mac multifonction en PyObjC, et je dois dire que, sur la base de l'expérience, la syntaxe d'Objective-C pour les structures de données en particulier (comme les tableaux et dictionnaires) est nettement plus encombrant et fastidieux que celui de Python. J'ai fondamentalement refusé de poursuivre le développement de mon application iPhone jusqu'à ce qu'Apple inclue la prise en charge de PyObjC. La syntaxe relativement verbeuse et fastidieuse d'Objective-C me distrait incroyablement lorsque j'essaie de développer le flux descendant de mes algorithmes.
Chris Redford
1
@Dave Verwer: cette réponse est-elle toujours d'actualité?
bukzor
5
@bukzor non, voir stackoverflow.com/questions/3691655/…
cobbal
2
@cobbal: Alors ce fil est assez trompeur. Quelle est la bonne façon de le faire corriger?
bukzor le
5
@Max Avez-vous utilisé PyObjC pour créer une application Mac et donc comparé la lisibilité entre les programmes Apple écrits en Python et les programmes Apple écrits en Objective-C? Sinon, vous n'avez aucune base pour ce jugement.
Chris Redford le
53

Vous pouvez également utiliser PyObjC sur l'iPhone, grâce à l'excellent travail de Jay Freeman (saurik). Voir Applications iPhone en Python .

Notez que cela nécessite un iPhone jailbreaké pour le moment.

gavrie
la source
24

Il semble que c'est maintenant quelque chose que les développeurs sont autorisés à faire: le contrat de développeur iOS a été modifié hier et semble avoir été modifié de manière à rendre légal l'intégration d'un interpréteur Python dans votre application:

SECTION 3.3.2 - INTERPRÈTES

Vieux:

3.3.2 Une Application ne peut pas elle-même installer ou lancer un autre code exécutable par quelque moyen que ce soit, y compris sans limitation par l'utilisation d'une architecture de plug-in, en appelant d'autres frameworks, d'autres API ou autrement. Sauf approbation écrite contraire d'Apple, aucun code interprété ne peut être téléchargé ou utilisé dans une application, à l'exception du code qui est interprété et exécuté par les API documentées d'Apple et les interpréteurs intégrés. Nonobstant ce qui précède, avec le consentement écrit préalable d'Apple, une Application peut utiliser du code interprété intégré de manière limitée si une telle utilisation est uniquement destinée à fournir des fonctionnalités mineures ou des fonctionnalités compatibles avec l'objectif prévu et annoncé de l'Application.

Nouveau:

3.3.2 Une application ne peut pas télécharger ni installer de code exécutable. Le code interprété ne peut être utilisé dans une application que si tous les scripts, codes et interpréteurs sont intégrés dans l'application et non téléchargés. La seule exception à ce qui précède concerne les scripts et le code téléchargés et exécutés par le framework WebKit intégré d'Apple.

jkp
la source
23

Oui, vous pouvez. Vous écrivez votre code en tinypy (qui est restreint en Python), puis utilisez tinypy pour le convertir en C ++, et enfin compilez-le avec XCode dans une application iPhone native. Phil Hassey a publié un jeu appelé Elephants! en utilisant cette approche. Voici plus de détails,

http://www.philhassey.com/blog/2009/12/23/elephants-is-free-on-the-app-store/

Asim Jalis
la source
21

Oui, de nos jours, vous pouvez développer des applications pour iOS en Python.

Il existe deux frameworks que vous voudrez peut-être vérifier : Kivy et PyMob .

Veuillez également considérer les réponses à cette question , car elles sont plus à jour que celle-ci.

Filipe Correia
la source
Kivy et PyMob ne génèrent pas d'applications natives
Serjik
Dépend de votre définition de «natif». La question implique une définition qui couvre l'écriture d'applications python pour OSX, dans une certaine mesure de la même manière que vous pouvez maintenant les écrire pour iOS.
Filipe Correia
19

Une mise à jour du contrat de développeur iOS signifie que vous pouvez utiliser ce que vous voulez, à condition de respecter les directives du développeur. La section 3.3.1, qui limitait ce que les développeurs pouvaient utiliser pour le développement iOS, a été entièrement supprimée.

Source: http://daringfireball.net/2010/09/app_store_guidelines

Gordon Christie
la source
2
Heureusement, cette langue a été supprimée de la version 3.3.1 !!
Dan McClain
10

Pythonista dispose d'une fonctionnalité d'exportation vers Xcode qui vous permet d'exporter vos scripts Python en tant que projets Xcode qui créent des applications iOS autonomes.

https://github.com/ColdGrub1384/Pyto vaut également la peine d'être examiné.

cclauss
la source
4

L'accord du SDK iPhone est également assez vague quant à savoir si vous êtes même autorisé à exécuter des langages de script (en dehors du Javascript d'une WebView). Ma lecture est que c'est OK - tant qu'aucun des scripts que vous exécutez n'est téléchargé à partir du réseau (donc les scripts pré-installés et modifiés par l'utilisateur semblent être OK).

IANAL etc. etc.

schwa
la source
3

BeeWare est un framework open source pour la création d'applications iOS et Android natives.

Michael
la source
il est toujours en développement et problématique
ikel
3

Mise à jour 2019:

Alors que le développement Python-iOS est relativement immature et empêchera probablement (afaik) votre application d'avoir une interface utilisateur native et des fonctionnalités qui pourraient être obtenues dans un langage de développement pris en charge par Apple, Apple semble maintenant autoriser l'intégration d'interpréteurs Python dans Native Swift / Obj-C applications.

Cela prend en charge l'importation de bibliothèques Python et l'exécution de scripts Python (même avec les arguments de ligne de commande fournis) directement à partir de votre code Swift / Obj-C natif.

Mon entreprise enveloppe actuellement notre infrastructure (initialement écrite en Python) dans une application iOS native! Cela fonctionne très bien et la communication entre les pièces peut être facilement réalisée via un modèle client-serveur.

Voici une belle bibliothèque de Beeware avec un modèle de cookiecutter si vous voulez essayer d'exécuter des scripts Python dans votre application iOS: https://github.com/beeware/Python-Apple-support/tree/3.6 .

Rakeeb Hossain
la source
1

Techniquement, tant que le code interprété N'EST PAS téléchargé (hors JavaScript), l'application peut être approuvée. C'est exactement ce que fait le framework Rhomobiles "Rhodes", regroupant Ruby mobile, une version légère de Rails, et votre application pour la distribution via l'App-Store. Parce que l'interpréteur et le code interprété sont intégrés dans l'application finale - Apple ne le trouve pas répréhensible.

http://rhomobile.com/products/rhodes/

Même après le dernier communiqué de presse Apple - les applications rhodes (mobile ruby) sont toujours viables sur l'App-Store. J'aurais du mal à croire que tinyPy ou pyObjC ne trouveraient pas de place s'il y avait une communauté de développeurs consentante.

Michael McCracken
la source
0

Vous pouvez le faire avec PyObjC, avec un téléphone jailbreaké bien sûr. Mais si vous souhaitez l'introduire dans l'App Store, ils ne le permettront pas car il «interprète le code». Cependant, vous pourrez peut-être utiliser Shed Skin , même si je ne connais personne qui fasse cela. Cependant, je ne vois aucune bonne raison de le faire, car vous perdez le typage dynamique et pourriez aussi bien utiliser ObjC.

Zifre
la source
-1

Le seul langage "externe" significatif pour le développement iPhone que je connaisse avec un support semi-significatif en termes de frameworks et de compatibilité est MonoTouch , un environnement C # / .NET pour le développement sur iPhone.

Mike
la source
Oui, mais avec le nouveau contrat de développeur iPhone, nous devons attendre de voir ce que va devenir Mono Touch.
TalkingCode
1
@Holli: Le nouvel accord de développement met MonoTouch au clair
Dan McClain
-1

Je pense que ce n'était pas possible plus tôt mais j'ai récemment entendu parler de PyMob, ce qui semble intéressant car les applications sont écrites en Python et les sorties finales sont des codes sources natifs dans diverses plates-formes (Obj-C pour iOS, Java pour Android, etc.). C'est certainement tout à fait unique. Ce page Web l'explique plus en détail.

Je n'ai pas encore essayé, mais j'y jetterai bientôt un œil.

John M.
la source
Apparemment, cela va être lancé en tant que projet commercial. À partir de maintenant (28-Sep-12), le site dit: "Nous acceptons les clients pour un programme bêta limité. Veuillez nous contacter pour en savoir plus" et c'est tout.
ccpizza