Bisakah saya menulis aplikasi iPhone asli menggunakan Python [tertutup]

93

Menggunakan PyObjC , Anda dapat menggunakan Python untuk menulis aplikasi Cocoa untuk OS X. Dapatkah saya menulis aplikasi iPhone asli menggunakan Python dan jika ya, bagaimana?

davidmytton
sumber
36
Pengembang iPhone menandai pertanyaan ini karena kedaluwarsa (terlalu terlokalisasi), dan upaya untuk menyelesaikannya juga menimbulkan keluhan bahwa pertanyaan ini masih benar. Jadi, jika Anda berada di sini sebagai hasil pencarian, diperingatkan bahwa jawaban ini dari '08 dan mungkin tidak memiliki jawaban yang benar.
1
Untuk menjelaskan lebih lanjut: Apple pernah memiliki bagian dalam perjanjian mereka yang secara khusus mencantumkan bahasa pemrograman C, C ++, Objective-C dan Javascript yang diizinkan. Ini menyebabkan banyak kebingungan, keraguan dan ketakutan. Akhirnya Apple berhenti memberi nama bahasa tersebut. Saya tahu pasti bahwa meskipun ini ada, berbagai aplikasi ada di toko, diterbitkan, atau dalam pengembangan yang menggunakan skrip Lua dalam beberapa cara atau lainnya.
LearnCocos2D

Jawaban:

37

Tidak saat ini, saat ini satu-satunya bahasa yang tersedia untuk mengakses iPhone SDK adalah C / C ++, Objective C dan Swift.

Tidak ada alasan teknis mengapa hal ini tidak dapat berubah di masa mendatang, tetapi saya tidak akan menahan napas Anda karena hal ini terjadi dalam jangka pendek.

Meski begitu, Objective-C dan Swift sebenarnya tidak terlalu menakutkan ...

2016 edit

Javascript dengan kerangka NativeScript tersedia untuk digunakan sekarang.

Dave Verwer
sumber
32
Saya telah menulis aplikasi iPhone multi-fitur di Objective-C dan aplikasi Mac multi-fitur di PyObjC, dan saya harus mengatakan bahwa, berdasarkan pengalaman, sintaks Objective-C untuk struktur data pada khususnya (seperti array dan kamus) secara signifikan lebih rumit dan membosankan daripada Python. Saya pada dasarnya menolak untuk melakukan pengembangan lebih lanjut pada aplikasi iPhone saya sampai Apple menyertakan dukungan untuk PyObjC. Sintaks Objective-C yang relatif bertele-tele dan membosankan sangat mengganggu saya ketika saya mencoba mengembangkan aliran top-down dari algoritme saya.
Chris Redford
1
@ Dave Verwer: apakah jawaban ini masih mutakhir?
bukzor
5
@bukzor tidak, lihat stackoverflow.com/questions/3691655/…
cobbal
2
@cobbal: Maka utas ini cukup menyesatkan .. Apa cara yang benar untuk memperbaikinya?
bukzor
5
@Max Pernahkah Anda menggunakan PyObjC untuk membuat aplikasi Mac dan oleh karena itu membandingkan keterbacaan antara program Apple yang ditulis dengan Python dengan program Apple yang ditulis dalam Objective-C? Jika tidak, Anda tidak memiliki dasar untuk penilaian itu.
Chris Redford
53

Anda juga dapat menggunakan PyObjC di iPhone, karena karya luar biasa dari Jay Freeman (saurik). Lihat Aplikasi iPhone dengan Python .

Perhatikan bahwa ini membutuhkan iPhone yang sudah di-jailbreak saat ini.

gavrie
sumber
24

Tampaknya ini sekarang adalah sesuatu yang diizinkan untuk dilakukan oleh pengembang: Perjanjian Pengembang iOS telah diubah kemarin dan tampaknya telah diubah sedemikian rupa untuk membuat penyematan penerjemah Python dalam aplikasi Anda legal:

BAGIAN 3.3.2 - PENAFSIR

Tua:

3.3.2 Aplikasi tidak boleh menginstal sendiri atau meluncurkan kode lain yang dapat dijalankan dengan cara apa pun, termasuk namun tidak terbatas pada penggunaan arsitektur plug-in, memanggil kerangka kerja lain, API lain, atau sebaliknya. Kecuali jika disetujui oleh Apple secara tertulis, tidak ada kode yang ditafsirkan dapat diunduh atau digunakan dalam Aplikasi kecuali untuk kode yang diinterpretasikan dan dijalankan oleh API Terdokumentasi Apple dan interpreter internal. Sekalipun demikian, dengan persetujuan tertulis sebelumnya dari Apple, Aplikasi dapat menggunakan kode interpretasi yang disematkan dengan cara terbatas jika penggunaan tersebut semata-mata untuk menyediakan fitur atau fungsionalitas kecil yang konsisten dengan tujuan yang dimaksudkan dan diiklankan dari Aplikasi.

Baru:

3.3.2 Aplikasi tidak boleh mengunduh atau menginstal kode yang dapat dijalankan. Kode yang ditafsirkan hanya dapat digunakan dalam Aplikasi jika semua skrip, kode, dan juru bahasa dikemas dalam Aplikasi dan tidak diunduh. Satu-satunya pengecualian untuk hal tersebut di atas adalah skrip dan kode yang diunduh dan dijalankan oleh kerangka kerja WebKit bawaan Apple.

jkp
sumber
23

Ya kamu bisa. Anda menulis kode Anda dalam tinypy (yang dibatasi Python), lalu menggunakan tinypy untuk mengubahnya menjadi C ++, dan terakhir mengkompilasinya dengan XCode menjadi aplikasi iPhone asli. Phil Hassey telah menerbitkan game berjudul Elephants! menggunakan pendekatan ini. Berikut detail selengkapnya,

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

Asim Jalis
sumber
21

Ya, saat ini Anda dapat mengembangkan aplikasi untuk iOS dengan Python.

Ada dua kerangka kerja yang mungkin ingin Anda periksa : Kivy dan PyMob .

Harap pertimbangkan jawaban atas pertanyaan ini juga, karena jawaban tersebut lebih mutakhir daripada yang ini.

Filipe Correia
sumber
Kivy dan PyMob tidak membuat aplikasi asli
Serjik
Tergantung pada definisi Anda tentang "asli". Pertanyaan tersebut menyiratkan definisi yang mencakup penulisan aplikasi python untuk OSX, sampai batas tertentu dengan cara yang sama seperti Anda sekarang dapat menulisnya untuk iOS.
Filipe Correia
19

Pembaruan pada Perjanjian Pengembang iOS berarti Anda dapat menggunakan apa pun yang Anda suka, selama Anda memenuhi pedoman pengembang. Bagian 3.3.1, yang membatasi apa yang dapat digunakan pengembang untuk pengembangan iOS, telah dihapus seluruhnya.

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

Gordon Christie
sumber
2
Untungnya, bahasa ini telah dihapus dari 3.3.1 !!
Dan McClain
4

Perjanjian iPhone SDK juga agak kabur tentang apakah Anda bahkan diizinkan untuk menjalankan bahasa skrip (di luar Javascript WebView). Saya membaca bahwa tidak apa-apa - selama tidak ada skrip yang Anda jalankan diunduh dari jaringan (jadi skrip pra-instal dan yang diedit pengguna tampaknya baik-baik saja).

IANAL dll.

schwa
sumber
3

BeeWare adalah kerangka kerja sumber terbuka untuk membuat aplikasi iOS & Android asli.

michael
sumber
itu masih dalam pengembangan dan bermasalah
ikel
3

Pembaruan 2019:

Meskipun pengembangan Python-iOS relatif belum matang dan kemungkinan akan mencegah (afaik) aplikasi Anda memiliki UI asli dan fungsionalitas yang dapat dicapai dalam bahasa pengembangan yang didukung Apple, Apple sekarang tampaknya mengizinkan penyematan interpreter Python di Native Swift / Obj-C aplikasi.

Ini mendukung pengimporan pustaka Python dan menjalankan skrip Python (bahkan dengan argumen baris perintah yang disediakan) langsung dari kode Native Swift / Obj-C Anda.

Perusahaan saya sebenarnya membungkus infrastruktur kami (aslinya ditulis dengan Python) dalam aplikasi iOS asli! Ini bekerja dengan sangat baik dan komunikasi antar bagian dapat dengan mudah dicapai melalui model klien-server.

Ini adalah pustaka yang bagus dari Beeware dengan template cookiecutter jika Anda ingin mencoba dan menjalankan skrip Python di aplikasi iOS Anda: https://github.com/beeware/Python-Apple-support/tree/3.6 .

Rakeeb Hossain
sumber
1

Secara teknis, selama kode yang ditafsirkan TIDAK diunduh (tidak termasuk JavaScript), aplikasi dapat disetujui. Framework Rhomobiles "Rhodes" melakukan hal itu, menggabungkan Ruby seluler, versi Rails yang ringan, dan aplikasi Anda untuk didistribusikan melalui app-store. Karena penerjemah dan kode yang diinterpretasikan dikemas ke dalam aplikasi akhir - Apple tidak merasa keberatan.

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

Bahkan setelah rilis pers Apple terbaru - aplikasi rhodes (ruby seluler) masih dapat digunakan di App Store. Saya akan sulit percaya bahwa tinyPy atau pyObjC tidak akan menemukan tempat jika ada komunitas pengembang yang bersedia.

Michael McCracken
sumber
0

Anda dapat melakukan ini dengan PyObjC, tentu saja dengan telepon yang sudah di-jailbreak. Tetapi jika Anda ingin memasukkannya ke App Store, mereka tidak akan mengizinkannya karena "menafsirkan kode". Namun, Anda mungkin dapat menggunakan Shed Skin , meskipun saya tidak mengetahui ada orang yang melakukan ini. Saya tidak bisa memikirkan alasan bagus untuk melakukan ini, karena Anda kehilangan pengetikan dinamis, dan mungkin juga menggunakan ObjC.

Zifre
sumber
-1

Satu-satunya bahasa "eksternal" yang signifikan untuk pengembangan iPhone yang saya ketahui dengan dukungan semi-signifikan dalam hal kerangka kerja dan kompatibilitas adalah MonoTouch , lingkungan C # /. NET untuk dikembangkan di iPhone.

Mike
sumber
Ya, tetapi dengan Perjanjian Pengembang iPhone baru kita harus menunggu dan melihat apa yang akan terjadi dengan Mono Touch.
TalkingCode
1
@Holli: Kesepakatan pengembang yang sekarang membuat MonoTouch jelas
Dan McClain
-1

Saya pikir itu tidak mungkin sebelumnya tetapi saya baru-baru ini mendengar tentang PyMob, yang tampaknya menarik karena aplikasinya ditulis dengan Python dan keluaran akhirnya adalah kode sumber asli di berbagai platform (Obj-C untuk iOS, Java untuk Android dll). Ini tentu cukup unik. Halaman web ini menjelaskannya lebih detail.

Saya belum mencobanya, tetapi akan segera melihatnya.

John M.
sumber
Rupanya ini akan diluncurkan sebagai proyek komersial. Mulai sekarang (28-Sep-12) situs tersebut mengatakan: "Kami menerima pelanggan untuk program Beta terbatas. Silakan hubungi kami untuk menanyakan" dan hanya itu.
ccpizza