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?
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?
Antworten:
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.
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.
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.
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/
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.
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
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.
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.
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 .
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.
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.
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 .
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.