Tôi có thể viết các ứng dụng iPhone gốc bằng Python [đã đóng]


91

Sử dụng PyObjC , bạn có thể sử dụng Python để viết các ứng dụng Cocoa cho OS X. Tôi có thể viết các ứng dụng iPhone gốc bằng Python không và nếu có, thì làm thế nào?


36
Các nhà phát triển iPhone đang gắn cờ câu hỏi này là đã lỗi thời (quá bản địa hóa) và những nỗ lực giải quyết vấn đề này cũng đang gây ra những lời phàn nàn rằng nó vẫn đúng. Vì vậy, nếu bạn ở đây là kết quả của một tìm kiếm, hãy cảnh báo rằng câu trả lời này là từ '08 và có thể không có câu trả lời chính xác.

1
Để giải thích thêm: Apple đã từng có một phần trong thỏa thuận của họ liệt kê cụ thể các ngôn ngữ lập trình được phép C, C ++, Objective-C và Javascript. Điều này đã gây ra rất nhiều bối rối, nghi ngờ và sợ hãi. Cuối cùng thì Apple đã ngừng đặt tên cho các ngôn ngữ. Tôi biết một thực tế rằng ngay cả khi điều này đã được áp dụng, nhiều ứng dụng đã có trên cửa hàng, đang được xuất bản hoặc đang được phát triển sử dụng tập lệnh Lua theo cách này hay cách khác.
LearnCocos2D

Câu trả lời:


37

Hiện tại thì không, hiện tại các ngôn ngữ duy nhất có sẵn để truy cập iPhone SDK là C / C ++, Objective C và Swift.

Không có lý do kỹ thuật nào khiến điều này không thể thay đổi trong tương lai nhưng tôi sẽ không nín thở vì điều này xảy ra trong ngắn hạn.

Điều đó nói rằng, Objective-C và Swift thực sự không quá đáng sợ ...

2016 sửa

Javascript với khung NativeScript hiện có sẵn để sử dụng.


32
Tôi đã viết một ứng dụng iPhone đa tính năng trong Objective-C và một ứng dụng Mac nhiều tính năng trong PyObjC và tôi phải nói rằng, dựa trên kinh nghiệm, cú pháp của Objective-C cho các cấu trúc dữ liệu nói riêng (chẳng hạn như mảng và từ điển) cồng kềnh và tẻ nhạt hơn đáng kể so với Python. Về cơ bản, tôi đã từ chối phát triển thêm ứng dụng iPhone của mình cho đến khi Apple hỗ trợ PyObjC. Cú pháp tương đối dài dòng và tẻ nhạt của Objective-C khiến tôi vô cùng mất tập trung khi tôi đang cố gắng phát triển luồng thuật toán từ trên xuống của mình.
Chris Redford

1
@Dave Verwer: câu trả lời này có còn cập nhật không?
bukzor


2
@cobbal: Vậy thì chủ đề này khá sai lầm .. Cách chính xác để sửa nó là gì?
bukzor

5
@Max Bạn đã sử dụng PyObjC để tạo ứng dụng Mac và do đó so sánh khả năng đọc giữa các chương trình Apple viết bằng Python với các chương trình Apple viết bằng Objective-C chưa? Nếu không, bạn không có cơ sở cho nhận định đó.
Chris Redford

53

Bạn cũng có thể sử dụng PyObjC trên iPhone, do tác phẩm xuất sắc của Jay Freeman (saurik). Xem Ứng dụng iPhone bằng Python .

Lưu ý rằng điều này yêu cầu iPhone đã jailbreak tại thời điểm này.


24

Có vẻ như đây là điều mà các nhà phát triển được phép làm: Thỏa thuận dành cho nhà phát triển iOS đã được thay đổi vào ngày hôm qua và dường như đã được sửa đổi theo cách để làm cho việc nhúng trình thông dịch Python trong ứng dụng của bạn hợp pháp:

MỤC 3.3.2 - NGƯỜI GIẢI THÍCH

Cũ:

3.3.2 Ứng dụng không được tự cài đặt hoặc khởi chạy mã thực thi khác bằng bất kỳ cách nào, bao gồm nhưng không giới hạn thông qua việc sử dụng kiến ​​trúc trình cắm thêm, gọi các khung công tác khác, các API khác hoặc cách khác. Trừ khi được Apple chấp thuận bằng văn bản, không có mã thông dịch nào có thể được tải xuống hoặc sử dụng trong Ứng dụng ngoại trừ mã được thông dịch và chạy bởi các API được lập thành tài liệu của Apple và (các) trình thông dịch tích hợp sẵn. Bất chấp những điều đã nói ở trên, với sự đồng ý trước bằng văn bản của Apple, Ứng dụng có thể sử dụng mã thông dịch nhúng theo một cách hạn chế nếu việc sử dụng đó chỉ nhằm cung cấp các tính năng hoặc chức năng nhỏ phù hợp với mục đích đã định và được quảng cáo của Ứng dụng.

Mới:

3.3.2 Ứng dụng không được tải xuống hoặc cài đặt mã thực thi. Mã được thông dịch chỉ có thể được sử dụng trong Ứng dụng nếu tất cả các tập lệnh, mã và trình thông dịch được đóng gói trong Ứng dụng và không được tải xuống. Ngoại lệ duy nhất cho những điều đã nói ở trên là các tập lệnh và mã được tải xuống và chạy bởi khung WebKit tích hợp của Apple.


23

Có bạn có thể. Bạn viết mã của mình bằng tinypy (bị hạn chế trong Python), sau đó sử dụng tinypy để chuyển nó sang C ++ và cuối cùng biên dịch mã này với XCode thành một ứng dụng iPhone gốc. Phil Hassey đã xuất bản một trò chơi có tên là Những chú voi! sử dụng cách tiếp cận này. Đây là chi tiết khác,

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


21

Có, ngày nay bạn có thể phát triển ứng dụng cho iOS bằng Python.

Có hai khung mà bạn có thể muốn kiểm tra: KivyPyMob .

Vui lòng xem xét các câu trả lời cho câu hỏi này , vì chúng cập nhật hơn câu này.


Kivy và PyMob không tạo ra các ứng dụng bản địa
Serjik

Phụ thuộc vào định nghĩa của bạn về "gốc". Câu hỏi ngụ ý một định nghĩa bao gồm việc viết ứng dụng python cho OSX, ở một mức độ nhất định giống như cách mà bây giờ bạn có thể viết chúng cho iOS.
Filipe Correia

19

Bản cập nhật cho Thỏa thuận dành cho nhà phát triển iOS có nghĩa là bạn có thể sử dụng bất kỳ thứ gì bạn thích, miễn là bạn đáp ứng các nguyên tắc dành cho nhà phát triển. Phần 3.3.1, vốn hạn chế những gì nhà phát triển có thể sử dụng để phát triển iOS, đã bị xóa hoàn toàn.

Nguồn: http://daringfireball.net/2010/09/app_store_guidelines


2
Rất may, ngôn ngữ này đã bị xóa khỏi 3.3.1 !!
Dan McClain


4

Thỏa thuận SDK iPhone cũng khá mơ hồ về việc bạn thậm chí có được phép chạy các ngôn ngữ kịch bản (bên ngoài Javascript của WebView) hay không. Tôi đọc là OK - miễn là không có tập lệnh nào bạn thực thi được tải xuống từ mạng (vì vậy các tập lệnh được cài đặt sẵn và do người dùng chỉnh sửa dường như là OK).

IANAL, v.v.


3

BeeWare là một khung mã nguồn mở để tạo các ứng dụng iOS và Android gốc.


nó vẫn đang được phát triển và có vấn đề
ikel 23/03 '19

3

Cập nhật năm 2019:

Mặc dù sự phát triển Python-iOS còn tương đối non nớt và có khả năng sẽ ngăn (afaik) ứng dụng của bạn có giao diện người dùng và chức năng gốc có thể đạt được bằng ngôn ngữ phát triển do Apple hỗ trợ, Apple hiện có vẻ cho phép nhúng trình thông dịch Python trong Native Swift / obj-C ứng dụng.

Điều này hỗ trợ nhập thư viện Python và chạy các tập lệnh Python (ngay cả với các đối số dòng lệnh được cung cấp) trực tiếp từ mã Swift / Obj-C bản địa của bạn.

Công ty của tôi thực sự đang gói cơ sở hạ tầng của chúng tôi (ban đầu được viết bằng Python) trong một ứng dụng iOS gốc! Nó hoạt động rất tốt và giao tiếp giữa các bộ phận có thể dễ dàng đạt được thông qua mô hình máy khách-máy chủ.

Đây là một thư viện tuyệt vời của Beeware với một mẫu cookiecutter nếu bạn muốn thử và chạy các tập lệnh Python trong ứng dụng iOS của mình: https://github.com/beeware/Python-Apple-support/tree/3.6 .


1

Về mặt kỹ thuật, miễn là mã được giải thích KHÔNG được tải xuống (ngoại trừ JavaScript), ứng dụng có thể được chấp thuận. Khuôn khổ Rhomobiles "Rhodes" làm được điều đó, bao gồm Ruby di động, phiên bản nhẹ của Rails và ứng dụng của bạn để phân phối qua cửa hàng ứng dụng. Bởi vì cả trình thông dịch và mã được thông dịch đều được đóng gói vào ứng dụng cuối cùng - Apple không thấy điều đó là đáng phản đối.

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

Ngay cả sau thông cáo báo chí mới nhất của apple - các ứng dụng rhodes (ruby di động) vẫn có thể tồn tại trên app-store. Tôi khó tin rằng tinyPy hoặc pyObjC sẽ không tìm được chỗ đứng nếu có một cộng đồng nhà phát triển sẵn lòng.


0

Bạn có thể làm điều này với PyObjC, tất nhiên là với điện thoại đã jailbreak. Nhưng nếu bạn muốn đưa nó vào App Store, họ sẽ không cho phép vì nó "thông dịch mã." Tuy nhiên, bạn có thể sử dụng Shed Skin , mặc dù tôi không biết có ai làm điều này. Mặc dù vậy, tôi không thể nghĩ ra bất kỳ lý do chính đáng nào để làm điều này, vì bạn mất tính năng nhập động và cũng có thể sử dụng ObjC.


-1

Ngôn ngữ "bên ngoài" quan trọng duy nhất để phát triển iPhone mà tôi biết với sự hỗ trợ đáng kể về khuôn khổ và khả năng tương thích là MonoTouch , một môi trường C # /. NET để phát triển trên iPhone.


Có nhưng với Thỏa thuận nhà phát triển iPhone mới, chúng ta phải chờ xem Mono Touch sẽ ra sao.
TalkingCode

1
@Holli: Thỏa thuận nhà phát triển mới hiện đã đặt MonoTouch vào tầm rõ ràng
Dan McClain

-1

Tôi nghĩ không thể xảy ra sớm hơn nhưng gần đây tôi đã nghe nói về PyMob, điều này có vẻ thú vị vì các ứng dụng được viết bằng Python và kết quả đầu ra cuối cùng là mã nguồn gốc trên nhiều nền tảng khác nhau (obj-C cho iOS, Java cho Android, v.v.). Điều này chắc chắn là khá độc đáo. Trang web này giải thích nó chi tiết hơn.

Tôi vẫn chưa thử, nhưng sẽ xem xét sớm.


Rõ ràng đây sẽ là một dự án thương mại. Vào thời điểm hiện tại (28-12-9), trang web cho biết: "Chúng tôi đang chấp nhận khách hàng tham gia chương trình Beta giới hạn. Vui lòng liên hệ với chúng tôi để hỏi" và chỉ có vậy.
ccpizza
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.