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?

Davidmytton
quelle
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.

Dave Verwer
quelle
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
5
@bukzor nein, siehe stackoverflow.com/questions/3691655/…
Cobbal
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.

Gavrie
quelle
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.

jkp
quelle
23

Ja, du kannst. Sie schreiben Ihren Code in Tinypy (das ist Python eingeschränkt), konvertieren ihn dann mit Tinypy in C ++ und kompilieren ihn schließlich mit XCode in eine native iPhone-App. Phil Hassey hat ein Spiel namens Elephants veröffentlicht! mit diesem Ansatz. Hier sind weitere Details,

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

Asim Jalis
quelle
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.

Filipe Correia
quelle
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
19

Ein Update der iOS-Entwicklervereinbarung bedeutet, dass Sie alles verwenden können, was Sie möchten, solange Sie die Entwicklerrichtlinien erfüllen. Abschnitt 3.3.1, der die Verwendung durch Entwickler für die iOS-Entwicklung einschränkte, wurde vollständig entfernt.

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

Gordon Christie
quelle
2
Zum Glück wurde diese Sprache aus 3.3.1 entfernt !!
Dan McClain
10

Pythonista verfügt über eine Funktion zum Exportieren in Xcode, mit der Sie Ihre Python-Skripte als Xcode-Projekte exportieren können, die eigenständige iOS-Apps erstellen.

https://github.com/ColdGrub1384/Pyto ist ebenfalls einen Blick wert.

cclauss
quelle
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.

Schwa
quelle
3

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

Michael
quelle
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 .

Rakeeb Hossain
quelle
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.

Michael McCracken
quelle
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.

Zifre
quelle
-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 .

Mike
quelle
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.

John M.
quelle
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