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?
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?
Câu trả lời:
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.
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.
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.
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/
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: Kivy và PyMob .
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.
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
Pythonista có tính năng Xuất sang Xcode cho phép bạn xuất các tập lệnh Python của mình dưới dạng các dự án Xcode xây dựng các ứng dụng iOS độc lập.
https://github.com/ColdGrub1384/Pyto cũng đáng xem xét.
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.
BeeWare là một khung mã nguồn mở để tạo các ứng dụng iOS và Android gốc.
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 .
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.
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.
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.
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.