ฉันสามารถเขียนแอพของ iPhone โดยใช้ Python [ปิด] ได้ไหม


93

เมื่อใช้PyObjCคุณสามารถใช้ Python เพื่อเขียนแอปพลิเคชัน Cocoa สำหรับ OS X ได้ฉันจะเขียนแอป iPhone ดั้งเดิมโดยใช้ Python ได้หรือไม่ถ้าเป็นเช่นนั้นจะทำอย่างไร


36
นักพัฒนา iPhone ตั้งค่าสถานะคำถามนี้ว่าล้าสมัย (แปลเป็นภาษาท้องถิ่นเกินไป) และความพยายามที่จะแก้ไขก็เป็นการร้องเรียนว่ายังคงถูกต้อง ดังนั้นหากคุณมาที่นี่เนื่องจากผลการค้นหาขอเตือนว่าคำตอบนี้มาจาก '08 และอาจไม่มีคำตอบที่ถูกต้อง

1
เพื่ออธิบายเพิ่มเติม: Apple เคยมีส่วนหนึ่งในข้อตกลงที่ระบุเฉพาะภาษาการเขียนโปรแกรมที่อนุญาต C, C ++, Objective-C และ Javascript นี่เป็นสาเหตุของความสับสนความสงสัยและความกลัวอย่างมาก ในที่สุด Apple ก็หยุดตั้งชื่อภาษา ฉันทราบดีว่าแม้ว่าจะมีการใช้งานแอปพลิเคชันต่างๆอยู่ในร้านค้ากำลังเผยแพร่หรืออยู่ระหว่างการพัฒนาที่ใช้สคริปต์ Lua ไม่ทางใดก็ทางหนึ่ง
LearnCocos2D

คำตอบ:


37

ยังไม่มีในปัจจุบันภาษาเดียวที่สามารถเข้าถึง iPhone SDK ได้แก่ C / C ++, Objective C และ Swift

ไม่มีเหตุผลทางเทคนิคว่าทำไมสิ่งนี้ไม่สามารถเปลี่ยนแปลงได้ในอนาคต แต่ฉันจะไม่กลั้นหายใจเพราะสิ่งนี้เกิดขึ้นในระยะสั้น

ที่กล่าวว่า Objective-C และ Swift ไม่ได้น่ากลัวเกินไป ...

2559 แก้ไข

Javascript พร้อม NativeScript framework พร้อมใช้งานแล้ว


32
ฉันได้เขียนแอพ iPhone หลายฟีเจอร์ใน Objective-C และแอพ Mac แบบมัลติฟีเจอร์ใน PyObjC และฉันต้องบอกว่าตามประสบการณ์ไวยากรณ์ของ Objective-C สำหรับโครงสร้างข้อมูลโดยเฉพาะ (เช่นอาร์เรย์และ พจนานุกรม) มีความยุ่งยากและน่าเบื่อกว่า Python อย่างมีนัยสำคัญ โดยพื้นฐานแล้วฉันปฏิเสธที่จะทำการพัฒนาเพิ่มเติมในแอพ iPhone ของฉันจนกว่า Apple จะรวมการสนับสนุน PyObjC รูปแบบเชิงเปรียบเทียบที่ละเอียดและน่าเบื่อของ Objective-C ทำให้ฉันเสียสมาธิอย่างมากเมื่อฉันพยายามพัฒนาขั้นตอนวิธีจากบนลงล่างของอัลกอริทึมของฉัน
Chris Redford

1
@Dave Verwer: คำตอบนี้ยังเป็นปัจจุบันอยู่หรือไม่?
bukzor


2
@cobbal: แล้วกระทู้นี้ค่อนข้างทำให้เข้าใจผิด .. อะไรคือวิธีที่ถูกต้องในการแก้ไข?
bukzor

5
@Max คุณเคยใช้ PyObjC เพื่อสร้างแอปพลิเคชัน Mac หรือไม่ดังนั้นจึงเปรียบเทียบความสามารถในการอ่านระหว่างโปรแกรมของ Apple ที่เขียนด้วย Python กับโปรแกรมของ Apple ที่เขียนด้วย Objective-C หรือไม่? ถ้าไม่คุณไม่มีพื้นฐานสำหรับการตัดสินนั้น
Chris Redford

53

คุณสามารถใช้ PyObjC บน iPhone ได้เช่นกันเนื่องจากผลงานที่ยอดเยี่ยมของ Jay Freeman (saurik) ดูโปรแกรม iPhone ในหลาม

โปรดทราบว่าสิ่งนี้ต้องใช้ iPhone ที่เจลเบรคในขณะนี้


24

ดูเหมือนว่านี่เป็นสิ่งที่นักพัฒนาได้รับอนุญาตให้ทำ: ข้อตกลงสำหรับนักพัฒนาซอฟต์แวร์ iOS มีการเปลี่ยนแปลงเมื่อวานนี้และดูเหมือนว่าจะได้รับการแก้ไขในลักษณะที่ทำให้การฝังตัวแปลภาษา Python ในแอปพลิเคชันของคุณถูกกฎหมาย:

ส่วนที่ 3.3.2 - ล่าม

เก่า:

3.3.2 แอปพลิเคชันต้องไม่ติดตั้งหรือเรียกใช้โค้ดปฏิบัติการอื่น ๆ ด้วยวิธีการใด ๆ รวมถึง แต่ไม่ จำกัด เพียงการใช้สถาปัตยกรรมปลั๊กอินการเรียกเฟรมเวิร์กอื่น API อื่น ๆ หรืออย่างอื่น เว้นแต่จะได้รับการอนุมัติเป็นลายลักษณ์อักษรจาก Apple จะไม่มีการดาวน์โหลดหรือใช้โค้ดที่ตีความในแอปพลิเคชันยกเว้นโค้ดที่ตีความและเรียกใช้โดย Documented API ของ Apple และตัวแปลในตัว แม้ว่าจะได้รับความยินยอมเป็นลายลักษณ์อักษรล่วงหน้าจาก Apple แอปพลิเคชันอาจใช้โค้ดที่ตีความแบบฝังในลักษณะที่ จำกัด หากการใช้งานดังกล่าวเป็นเพียงการให้คุณสมบัติหรือฟังก์ชันเล็กน้อยที่สอดคล้องกับวัตถุประสงค์ของแอปพลิเคชันที่ตั้งใจและโฆษณา

ใหม่:

3.3.2 แอปพลิเคชันไม่สามารถดาวน์โหลดหรือติดตั้งโค้ดปฏิบัติการได้ รหัสที่ตีความสามารถใช้ได้เฉพาะในแอปพลิเคชันหากสคริปต์รหัสและตัวแปลทั้งหมดถูกบรรจุในแอปพลิเคชันและไม่ได้ดาวน์โหลด ข้อยกเว้นเพียงประการเดียวที่กล่าวมาคือสคริปต์และโค้ดที่ดาวน์โหลดและเรียกใช้โดย WebKit framework ในตัวของ Apple


23

ใช่คุณสามารถ. คุณเขียนโค้ดของคุณเป็น tinypy (ซึ่งเป็น Python ที่ จำกัด ) จากนั้นใช้ tinypy เพื่อแปลงเป็น C ++ และในที่สุดก็รวบรวมสิ่งนี้ด้วย XCode ลงในแอป iPhone ดั้งเดิม Phil Hassey ได้เผยแพร่เกมชื่อ Elephants! โดยใช้แนวทางนี้ นี่คือรายละเอียดเพิ่มเติม

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


21

ใช่ปัจจุบันคุณสามารถพัฒนาแอพสำหรับ iOS ใน Python ได้

: มีสองกรอบที่คุณอาจต้องการที่จะเช็คเอาท์มีKivyและPyMob

โปรดพิจารณาคำตอบของคำถามนี้ด้วยเนื่องจากคำถามเหล่านี้เป็นข้อมูลล่าสุดมากกว่าคำถามนี้


Kivy และ PyMob ไม่สร้างแอปเนทีฟ
Serjik

ขึ้นอยู่กับคำจำกัดความของ "พื้นเมือง" คำถามหมายถึงคำจำกัดความที่ครอบคลุมการเขียนแอปพลิเคชัน python สำหรับ OSX ในระดับหนึ่งในลักษณะเดียวกับที่คุณสามารถเขียนสำหรับ iOS ได้
Filipe Correia

19

การอัปเดตข้อตกลงสำหรับนักพัฒนาซอฟต์แวร์ iOS หมายความว่าคุณสามารถใช้อะไรก็ได้ที่คุณต้องการตราบเท่าที่คุณปฏิบัติตามหลักเกณฑ์สำหรับนักพัฒนา ส่วน 3.3.1 ซึ่ง จำกัด สิ่งที่นักพัฒนาสามารถใช้สำหรับการพัฒนา iOS ได้ถูกลบออกทั้งหมด

ที่มา: http://daringfireball.net/2010/09/app_store_guidelines


2
โชคดีที่ภาษานี้ถูกลบออกจาก 3.3.1 !!
Dan McClain

10

Pythonistaมีคุณสมบัติส่งออกไปยัง Xcode ที่ให้คุณส่งออกสคริปต์ Python ของคุณเป็นโปรเจ็กต์ Xcode ที่สร้างแอพ iOS แบบสแตนด์อโลน

https://github.com/ColdGrub1384/Pytoก็น่าดูเช่นกัน


4

ข้อตกลง iPhone SDK ค่อนข้างคลุมเครือว่าคุณได้รับอนุญาตให้เรียกใช้ภาษาสคริปต์หรือไม่ (นอก Javascript ของ WebView) การอ่านของฉันคือมันใช้ได้ - ตราบใดที่ไม่มีการดาวน์โหลดสคริปต์ใด ๆ ที่คุณเรียกใช้จากเครือข่าย (ดังนั้นสคริปต์ที่ติดตั้งไว้ล่วงหน้าและที่ผู้ใช้แก้ไขดูเหมือนจะใช้ได้)

IANAL ฯลฯ เป็นต้น


3

BeeWareเป็นเฟรมเวิร์กโอเพนซอร์สสำหรับการเขียนแอป iOS และ Android


ยังอยู่ระหว่างการพัฒนาและมีปัญหา
ikel

3

อัปเดต 2019:

แม้ว่าการพัฒนา Python-iOS จะยังไม่บรรลุนิติภาวะและมีแนวโน้มที่จะป้องกันไม่ให้ (afaik) แอปของคุณมี UI ดั้งเดิมและฟังก์ชันที่สามารถทำได้ในภาษาการพัฒนาที่รองรับโดย Apple แต่ดูเหมือนว่า Apple จะอนุญาตให้ฝังล่าม Python ใน Native Swift / Obj-C แอพ

รองรับการนำเข้าไลบรารี Python และเรียกใช้สคริปต์ Python (แม้จะมีอาร์กิวเมนต์บรรทัดคำสั่งที่ให้มา) โดยตรงจากโค้ด Native Swift / Obj-C ของคุณ

บริษัท ของฉันกำลังรวมโครงสร้างพื้นฐานของเรา (เดิมเขียนด้วยภาษา Python) ในแอปพลิเคชัน iOS ดั้งเดิม! มันทำงานได้ดีมากและการสื่อสารระหว่างส่วนต่างๆสามารถทำได้อย่างง่ายดายผ่านรูปแบบไคลเอนต์เซิร์ฟเวอร์

นี่เป็นห้องสมุดที่ดีโดย Beeware ด้วยเทมเพลต cookiecutter ถ้าคุณต้องการที่จะลองและเรียกใช้สคริปต์หลามใน app iOS ของคุณ: https://github.com/beeware/Python-Apple-support/tree/3.6


1

ในทางเทคนิคตราบใดที่รหัสที่ตีความ ISN'T ไม่ดาวน์โหลด (ไม่รวม JavaScript) แอปอาจได้รับการอนุมัติ เฟรมเวิร์ก "Rhodes" ของ Rhom เนื่องจากทั้งล่ามและรหัสที่ตีความจะรวมอยู่ในแอปพลิเคชันขั้นสุดท้าย - Apple ไม่พบว่ามันไม่เหมาะสม

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

แม้หลังจากข่าวประชาสัมพันธ์ล่าสุดของ Apple - แอพโรดส์ (ทับทิมบนมือถือ) ยังคงใช้งานได้บนแอพสโตร์ ฉันคิดว่ามันยากที่จะเชื่อว่า tinyPy หรือ pyObjC จะไม่พบสถานที่หากมีชุมชนนักพัฒนาที่เต็มใจ


0

คุณสามารถทำได้ด้วย PyObjC ด้วยโทรศัพท์ที่เจลเบรคแน่นอน แต่ถ้าคุณต้องการนำไปไว้ใน App Store พวกเขาจะไม่อนุญาตเพราะมัน "แปลรหัส" อย่างไรก็ตามคุณอาจสามารถใช้Shed Skinได้แม้ว่าฉันจะไม่ทราบว่ามีใครทำเช่นนี้ก็ตาม ฉันไม่สามารถนึกถึงเหตุผลที่ดีในการทำเช่นนี้ได้เนื่องจากคุณสูญเสียการพิมพ์แบบไดนามิกและอาจใช้ ObjC ด้วยเช่นกัน


-1

ภาษา "ภายนอก" ที่สำคัญเพียงภาษาเดียวสำหรับการพัฒนา iPhone ที่ฉันทราบด้วยการสนับสนุนกึ่งสำคัญในแง่ของเฟรมเวิร์กและความเข้ากันได้คือMonoTouchซึ่งเป็นสภาพแวดล้อม C # /. NET สำหรับการพัฒนาบน iPhone


ใช่ แต่ด้วยข้อตกลงใหม่สำหรับนักพัฒนา iPhone เราต้องรอดูว่าจะกลายเป็นอะไรของ Mono Touch
TalkingCode

1
@Holli: ข้อตกลงการพัฒนาใหม่ในขณะนี้ทำให้ MonoTouch ชัดเจน
Dan McClain

-1

ฉันคิดว่ามันเป็นไปไม่ได้ก่อนหน้านี้ แต่ฉันเพิ่งได้ยินเกี่ยวกับ PyMob ซึ่งดูน่าสนใจเพราะแอพเขียนด้วย Python และผลลัพธ์สุดท้ายเป็นซอร์สโค้ดดั้งเดิมในแพลตฟอร์มต่างๆ (Obj-C สำหรับ iOS, Java สำหรับ Android ฯลฯ ) นี่เป็นสิ่งที่ไม่เหมือนใครอย่างแน่นอน หน้าเว็บนี้อธิบายรายละเอียดเพิ่มเติม

ยังไม่ได้ถ่ายเลย แต่จะมาดูเร็ว ๆ นี้


เห็นได้ชัดว่ากำลังจะเปิดตัวเป็นโครงการเชิงพาณิชย์ ณ ตอนนี้ (28-Sep-12) ไซต์ระบุว่า: "เรากำลังรับลูกค้าสำหรับโปรแกรมเบต้าแบบ จำกัด โปรดติดต่อเราเพื่อสอบถาม" และนั่นก็คือ
ccpizza
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.