Kann ich mit Python native iPhone-Apps schreiben? [Geschlossen]


91

Mit PyObjC können Sie mit Python Cocoa-Anwendungen für OS X schreiben. Kann ich native iPhone-Apps mit Python schreiben und wenn ja, wie?


36
iPhone-Entwickler kennzeichnen diese Frage als veraltet (zu lokalisiert), und Versuche, dies zu beheben, führen auch zu Beschwerden, dass sie immer noch korrekt ist. Wenn Sie aufgrund einer Suche hier sind, werden Sie gewarnt, dass diese Antwort aus dem Jahr 2008 stammt und möglicherweise keine richtige Antwort enthält.

1
Zur weiteren Erläuterung: Apple hatte einmal einen Abschnitt in seiner Vereinbarung, in dem die zulässigen Programmiersprachen C, C ++, Objective-C und Javascript speziell aufgeführt waren. Dies war Anlass für viel Verwirrung, Zweifel und Angst. Schließlich hörte Apple auf, die Sprachen zu benennen. Ich weiß, dass selbst während dieser Zeit eine Vielzahl von Apps im Store waren, veröffentlicht wurden oder sich in der Entwicklung befanden, die auf die eine oder andere Weise Lua-Skripte verwendeten.
LearnCocos2D

Antworten:


37

Derzeit sind C / C ++, Objective C und Swift die einzigen verfügbaren Sprachen für den Zugriff auf das iPhone SDK.

Es gibt keinen technischen Grund, warum sich dies in Zukunft nicht ändern könnte, aber ich würde Ihren Atem nicht anhalten, wenn dies kurzfristig geschieht.

Das heißt, Objective-C und Swift sind wirklich nicht zu beängstigend ...

2016 bearbeiten

Javascript mit NativeScript-Framework kann jetzt verwendet werden.


32
Ich habe eine iPhone-App mit mehreren Funktionen in Objective-C und eine Mac-App mit mehreren Funktionen in PyObjC geschrieben, und ich muss sagen, dass basierend auf der Erfahrung die Syntax von Objective-C insbesondere für Datenstrukturen (wie Arrays und Wörterbücher) ist wesentlich umständlicher und langwieriger als Pythons. Ich habe mich grundsätzlich geweigert, meine iPhone-App weiterzuentwickeln, bis Apple PyObjC unterstützt. Die vergleichsweise ausführliche und langwierige Syntax von Objective-C lenkt mich unglaublich ab, wenn ich versuche, den Top-Down-Fluss meiner Algorithmen zu entwickeln.
Chris Redford

1
@ Dave Verwer: Ist diese Antwort noch aktuell?
Bukzor


2
@ Cobbal: Dann ist dieser Thread ziemlich irreführend. Was ist der richtige Weg, um ihn zu korrigieren?
Bukzor

5
@Max Haben Sie PyObjC zum Erstellen einer Mac-Anwendung verwendet und daher die Lesbarkeit zwischen in Python geschriebenen Apple-Programmen und in Objective-C geschriebenen Apple-Programmen verglichen? Wenn nicht, haben Sie keine Grundlage für dieses Urteil.
Chris Redford

53

Dank der hervorragenden Arbeit von Jay Freeman (saurik) können Sie PyObjC auch auf dem iPhone verwenden. Siehe iPhone-Anwendungen in Python .

Beachten Sie, dass hierfür derzeit ein iPhone mit Jailbreak erforderlich ist.


24

Es scheint, dass Entwickler dies jetzt tun dürfen: Die iOS-Entwicklervereinbarung wurde gestern geändert und anscheinend so geändert, dass die Einbettung eines Python-Interpreters in Ihre Anwendung legal ist:

ABSCHNITT 3.3.2 - Dolmetscher

Alt:

3.3.2 Eine Anwendung darf selbst keinen anderen ausführbaren Code auf irgendeine Weise installieren oder starten, einschließlich ohne Einschränkung durch die Verwendung einer Plug-In-Architektur, das Aufrufen anderer Frameworks, anderer APIs oder auf andere Weise. Sofern von Apple nicht schriftlich anders genehmigt, darf kein interpretierter Code heruntergeladen oder in einer Anwendung verwendet werden, außer Code, der von Apples dokumentierten APIs und integrierten Interpretern interpretiert und ausgeführt wird. Ungeachtet des Vorstehenden kann eine Anwendung mit vorheriger schriftlicher Zustimmung von Apple eingebetteten interpretierten Code in begrenztem Umfang verwenden, wenn diese Verwendung ausschließlich dazu dient, geringfügige Merkmale oder Funktionen bereitzustellen, die mit dem beabsichtigten und beworbenen Zweck der Anwendung vereinbar sind.

Neu:

3.3.2 Eine Anwendung darf keinen ausführbaren Code herunterladen oder installieren. Interpretierter Code darf in einer Anwendung nur verwendet werden, wenn alle Skripte, Codes und Interpreter in der Anwendung gepackt und nicht heruntergeladen sind. Die einzige Ausnahme bilden Skripte und Code, die von Apples integriertem WebKit-Framework heruntergeladen und ausgeführt werden.



21

Ja, heutzutage können Sie Apps für iOS in Python entwickeln.

Es gibt zwei Frameworks, die Sie möglicherweise auschecken möchten: Kivy und PyMob .

Bitte beachten Sie auch die Antworten auf diese Frage , da diese aktueller sind als diese.


Kivy und PyMob generieren keine nativen Apps
Serjik

Hängt von Ihrer Definition von "native" ab. Die Frage impliziert eine Definition, die das Schreiben von Python-Anwendungen für OSX bis zu einem gewissen Grad auf die gleiche Weise abdeckt, wie Sie sie jetzt für iOS schreiben können.
Filipe Correia



4

Die iPhone SDK-Vereinbarung ist auch ziemlich vage, ob Sie überhaupt Skriptsprachen ausführen dürfen (außerhalb von Javascript von WebView). Ich lese, dass es in Ordnung ist - solange keines der von Ihnen ausgeführten Skripte aus dem Netzwerk heruntergeladen wird (vorinstallierte und vom Benutzer bearbeitete Skripte scheinen in Ordnung zu sein).

IANAL etc etc.


3

BeeWare ist ein Open Source-Framework zum Erstellen nativer iOS- und Android-Apps.


es ist noch in der Entwicklung und problematisch
ikel

3

Update 2019:

Während die Python-iOS-Entwicklung relativ unausgereift ist und wahrscheinlich verhindert, dass Ihre App über eine native Benutzeroberfläche und Funktionalität verfügt, die in einer von Apple unterstützten Entwicklungssprache erreicht werden könnten, scheint Apple nun die Einbettung von Python-Interpreten in Native Swift / Obj-C zuzulassen Apps.

Dies unterstützt das Importieren von Python-Bibliotheken und das Ausführen von Python-Skripten (auch mit den angegebenen Befehlszeilenargumenten) direkt aus Ihrem nativen Swift / Obj-C-Code.

Mein Unternehmen verpackt unsere Infrastruktur (ursprünglich in Python geschrieben) in eine native iOS-Anwendung! Es funktioniert sehr gut und die Kommunikation zwischen den Teilen kann leicht über ein Client-Server-Modell erreicht werden.

Hier ist eine schöne Bibliothek von Beeware mit einer Cookie-Cutter-Vorlage, wenn Sie versuchen möchten, Python-Skripte in Ihrer iOS-App auszuführen: https://github.com/beeware/Python-Apple-support/tree/3.6 .


1

Technisch gesehen kann die App genehmigt werden, solange der interpretierte Code NICHT heruntergeladen wird (ausgenommen JavaScript). Rhomobiles "Rhodes" -Framework macht genau das und bündelt Mobile Ruby, eine leichtgewichtige Version von Rails, und Ihre App für die Verteilung über den App-Store. Da sowohl der Interpreter als auch der interpretierte Code in die endgültige Anwendung gepackt sind, findet Apple dies nicht zu beanstanden.

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

Auch nach der neuesten Pressemitteilung von Apple sind Rhodes-Apps (Mobile Ruby) im App-Store noch funktionsfähig. Es fällt mir schwer zu glauben, dass tinyPy oder pyObjC keinen Platz finden würden, wenn es eine willige Entwicklergemeinschaft gäbe.


0

Sie können dies mit PyObjC tun, natürlich mit einem Telefon mit Jailbreak. Wenn Sie es jedoch in den App Store aufnehmen möchten, wird es nicht zugelassen, da es "Code interpretiert". Möglicherweise können Sie jedoch Shed Skin verwenden , obwohl mir niemand bekannt ist, der dies tut. Ich kann mir keinen guten Grund dafür vorstellen, da Sie die dynamische Eingabe verlieren und genauso gut ObjC verwenden könnten.


-1

MonoTouch , eine C # /. NET-Umgebung für die Entwicklung auf dem iPhone, ist die einzige wichtige "externe" Sprache für die iPhone-Entwicklung, die mir bekannt ist und die hinsichtlich Frameworks und Kompatibilität nur von geringer Bedeutung ist .


Ja, aber mit der neuen iPhone-Entwicklervereinbarung müssen wir abwarten, was aus Mono Touch wird.
TalkingCode

1
@ Holli: Die jetzt neue Entwicklervereinbarung macht MonoTouch klar
Dan McClain

-1

Ich denke, es war früher nicht möglich, aber ich habe kürzlich von PyMob gehört, was interessant erscheint, da die Apps in Python geschrieben sind und die endgültigen Ausgaben native Quellcodes auf verschiedenen Plattformen sind (Obj-C für iOS, Java für Android usw.). Das ist sicherlich ziemlich einzigartig. Dies Webseite erklärt es ausführlicher.

Ich habe es noch nicht ausprobiert, werde es aber bald ansehen.


Anscheinend wird dies als kommerzielles Projekt gestartet. Ab sofort (28.09.12) heißt es auf der Website: "Wir akzeptieren Kunden für ein begrenztes Beta-Programm. Bitte kontaktieren Sie uns, um sich zu erkundigen."
ccpizza
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.