มีวิธีเรียกใช้ Python บน Android หรือไม่?


2093

เรากำลังทำงานกับรุ่นS60และแพลตฟอร์มนี้มี Python API ที่ดี ..

อย่างไรก็ตามไม่มีอะไรเป็นทางการเกี่ยวกับ Python บน Android แต่เนื่องจากJythonมีอยู่แล้วมีวิธีให้งูและหุ่นยนต์ทำงานร่วมกันได้หรือไม่?

คำตอบ:


1061

วิธีหนึ่งคือใช้Kivy :

ไลบรารี Python แบบโอเพนซอร์สสำหรับการพัฒนาแอปพลิเคชั่นที่รวดเร็วซึ่งใช้ประโยชน์จากส่วนต่อประสานผู้ใช้ที่เป็นนวัตกรรมเช่นแอพมัลติทัช

Kivy ทำงานบน Linux, Windows, OS X, Android และ iOS คุณสามารถเรียกใช้รหัส [python] เดียวกันบนแพลตฟอร์มที่รองรับได้ทั้งหมด

แอพ Kivy Showcase


63
หากคุณใช้ Kivy นี่คือเครื่องมือที่จะช่วยจัดแพคเกจโครงการของคุณให้เป็น APK: github.com/kivy/python-for-android
gdw2

17
ฉันเล่นกับ Kivy เมื่อสัปดาห์ที่แล้วพยายามเขียนเกม นักพัฒนาหลักของพวกเขานั้นตอบคำถามเกี่ยวกับ IRC ได้อย่างรวดเร็วอย่างไรก็ตามหากคุณได้ตั้งโปรแกรม GUI ไว้ก่อนที่ Kivy จะทำให้คุณพูด WTF ได้เล็กน้อย ตัวอย่างของสิ่งที่ไม่มีเอกสารที่แปลกสำหรับฉัน: วิดเจ็ตทั้งหมดจะได้รับทุกเหตุการณ์ on_touch_down แม้ว่าเหตุการณ์จะเกิดขึ้นนอกภูมิภาคของพวกเขาไม่มีวิดเจ็ตที่มีวิธีการวาด () เกือบทุกอย่างเกิดขึ้นผ่านรูปแบบการสังเกตการณ์ที่กำหนดเอง บันทึกชื่อเหล่านี้ใช้ชื่อร่วมกับทรัพย์สินของ Python แต่ไม่เหมือนกัน)
Trey Stout

7
@Trey: สิ่งที่เกี่ยวกับสิ่งที่ไม่เกี่ยวข้องกับ GUI? มีข้อ จำกัด ใด ๆ เกี่ยวกับการใช้งานโมดูลของ Python หรือไม่? การเข้าถึงฟีเจอร์เฉพาะของ Android เช่นความสามารถในการอ่านข้อความเพิ่มการแจ้งเตือนทำงานในพื้นหลังสร้างภาพถ่ายอ่านรายชื่อผู้ติดต่อกำหนดตำแหน่ง GPS เป็นต้น
Tadeck

7
และตอนนี้ก็มีรองรับ iOS ด้วย!
rubik

16
ตอนนี้เกือบหนึ่งปีต่อมามีการสนับสนุนที่ดีกว่านี้อีกไหม? ที่นี่มีการปรับปรุงที่โดดเด่นหรือไม่?
TankorSmash

347

นอกจากนี้ยังมีโครงการAndroid Scripting Environment (ASE / SL4A) ใหม่ มันดูยอดเยี่ยมและมีการรวมเข้ากับส่วนประกอบ Android ดั้งเดิม

หมายเหตุ: ไม่อยู่ภายใต้ "การพัฒนาที่ใช้งานอยู่" แต่ส้อมบางอย่างอาจเป็น


70
จริง แต่พวกเขาต้องติดตั้ง ASE ไม่ใช่วิธีแก้ปัญหาที่ให้คุณเขียนแอพ Android ใน python โดยไม่ต้องติดตั้งอะไร (ผู้ใช้ปกติจะเป็น "wtf เป็น ASE นี้หรือไม่?)
Stuart Axon

20
นอกจากนี้ ASE เป็นสภาพแวดล้อมที่ จำกัด คุณไม่สามารถเขียนแอพ Android แบบเต็มแม้ว่าจะติดตั้ง ASE ไว้แล้วก็ตาม ดูstackoverflow.com/questions/2076381
Sridhar Ratnakumar

10
ฉันคิดว่ามันถูกเปลี่ยนชื่อเป็น SL4A
Vanuan

9
คุณสามารถเขียนแอพจัดทำแพ็กเกจและแม้แต่ขายบน Play Store ได้ตามต้องการด้วย SL4A วันนี้ มันเข้ากันได้ดีตั้งแต่มีการโพสต์ความคิดเห็นด้านบน ถ้าคุณต้องการ Python บน Android ดังนั้น PY4A ซึ่งทำงานบน SL4A น่าจะเป็นตัวเลือกที่ดีที่สุด
Carl Smith

2
ฉันยืนยัน SL4A ตอนนี้อนุญาตให้เขียนแพคเกจของแอปพลิเคชันพร้อมใช้งานฉันพยายามด้วย Perl มันใช้งานได้
ubugnu

216

ใช่ : สภาพแวดล้อมการเขียนสคริปต์ Android

ตัวอย่างผ่าน Matt Cuttsผ่าน SL4A - "นี่คือเครื่องสแกนบาร์โค้ดที่เขียนด้วยโค้ด Python หกบรรทัด:

import android
droid = android.Android()
code = droid.scanBarcode()
isbn = int(code['result']['SCAN_RESULT'])
url = "http://books.google.com?q=%d" % isbn
droid.startActivity('android.intent.action.VIEW', url)

46
S / YES / Meh อาจจะ / ... มัน จำกัด มาก กราฟิกหรือมัลติทัชอะไร หมายเลขใหญ่
gcb

2
@gcb คุณไม่สามารถใช้ชุดวิดเจ็ต Android ปกติ แต่คุณสามารถใช้ "webviews" (ซึ่งเป็นแอปพลิเคชัน gmail ดั้งเดิมที่ใช้เช่น)
gdw2

28
golfed:import android as a;d=a.Android();d.startActivity('android.intent.action.VIEW',"http://books.google.com?q=%d"%int(d.scanBarcode()['result']['SCAN_RESULT']))
อเล็กซ์ L

12
@ gdw2 แน่นอนว่าแอป Gmail ดั้งเดิมใช้ WebViews เพื่อแยกวิเคราะห์อีเมลเท่านั้นไม่ใช่สำหรับ UI ที่แท้จริง นั่นทำให้การเปรียบเทียบไร้สาระเล็กน้อย
Veselin Romić

88

ชุดข้อมูล Pygame สำหรับ Android

Pygameเป็นเครื่องมือเกม 2 มิติสำหรับ Python (บนเดสก์ท็อป) ซึ่งเป็นที่นิยมของโปรแกรมเมอร์ใหม่ ชุดข้อมูลPygame สำหรับ Androidอธิบายตัวเองว่า ...

... พอร์ตของชุดย่อยของฟังก์ชัน Pygame ไปยังแพลตฟอร์ม Android เป้าหมายของโครงการนี้คือการอนุญาตให้สร้างเกมเฉพาะสำหรับ Android และเพื่อลดความยุ่งยากในการย้ายเกมจากแพลตฟอร์มที่เหมือนกับพีซีไปจนถึง Android

ตัวอย่างประกอบด้วยเกมที่สมบูรณ์ซึ่งบรรจุใน APK ซึ่งน่าสนใจทีเดียว


4
มีหลายแง่มุมที่แตกต่างกับ Droid X ของฉัน (ปุ่มหรือหน้าจอสัมผัสจำไม่ได้) ดังนั้นฉันจึงไม่ได้ไปไกลกับเส้นทางนี้
gdw2

78

การรวบรวมข้าม & Ignifuga

บล็อกของฉันมีคำแนะนำและตัวแก้ไขสำหรับการคอมไพล์ข้าม Python 2.7.2 สำหรับ Android

ฉันได้เปิดIgnifugaซึ่งเป็นแหล่งเกมเครื่องยนต์ 2 มิติของฉันด้วย มันใช้ Python / SDL และข้ามคอมไพล์สำหรับ Android แม้ว่าคุณจะไม่ได้ใช้มันสำหรับเกมคุณอาจได้รับแนวคิดที่เป็นประโยชน์จากโค้ดหรือเครื่องมือสร้าง (ชื่อSchaferหลังจาก Tim ... คุณรู้จักใคร)


4
ประทับใจ +1 สำหรับสิ่งนี้ ไม่ได้รับการยอมรับเพราะคุณไม่สามารถเขียนอะไรเพื่อสาธารณะด้วยสิ่งนี้
e-Satisfaction

1
หากคุณหมายความว่าคุณไม่สามารถทำกราฟิกแอพได้แน่นอนว่าคุณสามารถทำงานได้มากขึ้นแน่นอน จริง ๆ แล้วฉันใช้พอร์ตนี้รวมกับ SDL 1.3 ไม่ใช่เรื่องง่ายที่จะเปลี่ยนจาก python interpreter ไปเป็นแอปแบบโต้ตอบ แต่สามารถทำได้
gabomdq

77

Scripting Layer สำหรับ Android

SL4Aทำในสิ่งที่คุณต้องการ คุณสามารถติดตั้งลงในอุปกรณ์ของคุณได้โดยตรงจากเว็บไซต์ของพวกเขาและไม่จำเป็นต้องรูท

รองรับหลากหลายภาษา Python เป็นผู้ใหญ่ที่สุด โดยค่าเริ่มต้นจะใช้ Python 2.6 แต่มีพอร์ต 3.2 ที่คุณสามารถใช้แทนได้ ฉันใช้พอร์ตนั้นสำหรับทุกสิ่งบน Galaxy S2 และใช้งานได้ดี

API

SL4A จัดให้มีพอร์ตandroidไลบรารีสำหรับภาษาที่รองรับแต่ละภาษา ไลบรารีมีส่วนต่อประสานกับ API Android พื้นฐานผ่านAndroidวัตถุเดียว

from android import Android

droid = Android()
droid.ttsSpeak('hello world') # example using the text to speech facade

แต่ละภาษามี API เดียวกันค่อนข้างมาก คุณสามารถใช้ JavaScript API ภายใน webviews ได้

let droid = new Android();
droid.ttsSpeak("hello from js");

ส่วนต่อประสานผู้ใช้

สำหรับส่วนต่อประสานผู้ใช้คุณมีสามตัวเลือก:

  • คุณสามารถใช้กล่องโต้ตอบทั่วไปและเนทิฟผ่าน API ได้อย่างง่ายดาย นี่เป็นสิ่งที่ดีสำหรับกล่องโต้ตอบการยืนยันและอินพุตผู้ใช้ขั้นพื้นฐานอื่น ๆ
  • คุณยังสามารถเปิด webview จากภายในสคริปต์ Python จากนั้นใช้ HTML5 สำหรับส่วนต่อประสานผู้ใช้ เมื่อคุณใช้ webviews จาก Python คุณสามารถส่งข้อความกลับไปกลับมาระหว่าง webview และกระบวนการ Python ที่วางไข่ UI จะไม่ใช้งานจริง แต่ก็ยังเป็นตัวเลือกที่ดี
  • นอกจากนี้บางส่วนสนับสนุนสำหรับส่วนติดต่อผู้ใช้ Android พื้นเมือง แต่ผมไม่แน่ใจว่าทำงานได้ดี; ฉันไม่เคยใช้มันเลย

คุณสามารถผสมผสานตัวเลือกต่าง ๆ เพื่อให้คุณมี webview สำหรับอินเทอร์เฟซหลักและยังคงใช้กล่องโต้ตอบเนทีฟ

QPython

มีโครงการของบุคคลที่สามชื่อเป็นQPython มันสร้างบน SL4A และใช้ประโยชน์อื่น ๆ

QPython ให้ nicer UI ให้คุณจัดการการติดตั้งของคุณและมีตัวแก้ไขโค้ดหน้าจอสัมผัสเล็ก ๆ น้อย ๆ เปลือก Python และ PIP เชลล์สำหรับการจัดการแพ็คเกจ พวกเขายังมีพอร์ต Python 3 ทั้งสองรุ่นมีให้บริการจาก Play Store ฟรี QPython ยังรวมไลบรารีจาก Python จำนวนมากบนโปรเจ็กต์ Android รวมถึง Kivy ด้วยดังนั้นมันจึงไม่ใช่ SL4A

โปรดทราบว่า QPython ยังคงพัฒนา SL4A ของพวกเขา (แม้ว่าจะไม่มากนัก) โครงการหลักของ SL4A นั้นค่อนข้างตายไปแล้ว

ลิงค์ที่มีประโยชน์


1
คุณสามารถใช้สิ่งเหล่านี้เพื่อเรียกใช้สคริปต์หลามจาก terminal หรือ tasker ได้หรือไม่ ฉันหาทางไม่ได้ :(
Pitto

1
คุณสามารถเรียกใช้สคริปต์ SL4A จาก Tasker มีตัวอย่างบางส่วนในหน้านี้ที่มีตัวอย่างของ Python ที่ถูกเรียกใช้จาก Tasker มันเป็นคำถามที่แตกต่างไปจากเดิมอย่างสิ้นเชิง
Carl Smith

77

ในฐานะที่เป็นคนรักPythonและโปรแกรมเมอร์ Android ฉันเสียใจที่พูดแบบนี้ไม่ได้เป็นวิธีที่ดี มีสองปัญหาคือ

ปัญหาหนึ่งคือมีมากกว่าภาษาการเขียนโปรแกรมในเครื่องมือการพัฒนา Android กราฟิก Android จำนวนมากเกี่ยวข้องกับไฟล์ XML เพื่อกำหนดค่าการแสดงผลคล้ายกับ HTML ออบเจ็กต์ในตัวของ Java นั้นถูกรวมเข้ากับรูปแบบ XML นี้และมันง่ายกว่าการเขียนโค้ดของคุณตั้งแต่ตรรกะไปจนถึงบิตแมป

ปัญหาอื่นคือ G1 (และอาจเป็นอุปกรณ์ Android อื่น ๆ ในอนาคตอันใกล้) นั้นไม่เร็วขนาดนั้น โปรเซสเซอร์ 200 MHz และ RAM มีข้อ จำกัด มาก แม้แต่ในจาวาคุณต้องทำการเขียนซ้ำเพื่อหลีกเลี่ยงการสร้างวัตถุในปริมาณที่เหมาะสมหากคุณต้องการทำให้แอปของคุณราบรื่น Python จะช้าไปสักพักบนอุปกรณ์มือถือ


48
ไม่มีคำภาษาจาวาเดี่ยว ๆ บนโทรศัพท์ Android มันถูกคอมไพล์เป็นรหัสไบต์ในระหว่างกระบวนการบรรจุภัณฑ์ ความเร็วไม่ใช่ปัญหา: Google สามารถให้เครื่องมือในการสร้างรหัสไบต์ที่ถูกต้องจากรหัสไพ ธ อน (เช่นสำหรับ Jython) BTW, Dalvik ไม่ใช่ Java VM ดังนั้นนี่ไม่เกี่ยวกับ Java VS Python
E-satis

6
JAVA bytecode ยังต้องถูกประมวลผลโดย JVM และภาษา Java ต้องการตัวรวบรวมขยะ ความเร็วจริงอาจมาจาก C ++ เท่านั้น
LtWorf

19
@ อีกสองปีต่อมาเรากำลังเรียกใช้โปรเซสเซอร์ Intel Atom หรือโปรเซสเซอร์ octa-core ตอนนี้ ;)
Rohan Kandwal

2
เนื่องจากความแตกต่างของพลังที่สามารถวาดได้โทรศัพท์จะเป็นลำดับที่ช้ากว่าเดสก์ท็อป อย่างไรก็ตามอย่ายอมแพ้กับ Python สำหรับอุปกรณ์พกพาเพราะโดยทั่วไปแล้วจะมีเพียงเศษเสี้ยวของรหัสที่ใช้ในการทำงานที่ต้องใช้ตัวประมวลผลและส่วนนี้สามารถปรับให้เหมาะสมได้โดยการเขียนใหม่ในภาษาอื่น
Evgeni Sergeev

2
โดยวิธีการที่ Google ผลักดัน Kotlin วันนี้ - ซึ่งเป็นภาษาที่ไม่รู้จักผู้ใช้ส่วนใหญ่ - เป็นที่ชัดเจนว่าเป็นไปได้ที่จะสนับสนุนภาษาอื่นนอกเหนือจาก Java (ฉันเป็น Java dev และแฟนงูหลาม) ดังนั้นฉันคิดว่าคำตอบนั้นค่อนข้างจะเป็นเรื่องการเมืองมากกว่าคำตอบเชิงปฏิบัติ
อเล็กซ์

49

Kivy

ฉันต้องการเพิ่มสิ่งที่ @JohnMudd เขียนเกี่ยวกับ Kivy เป็นเวลาหลายปีมาแล้วที่สถานการณ์เขาอธิบายและ Kivy พัฒนาขึ้นอย่างมีนัยสำคัญ

จุดขายที่ใหญ่ที่สุดของ Kivy ในความคิดของฉันคือความเข้ากันได้ข้ามแพลตฟอร์ม คุณสามารถเขียนโค้ดและทดสอบทุกสิ่งโดยใช้สภาพแวดล้อมเดสก์ท็อป (Windows / * ระวัง ฯลฯ ) จากนั้นทำแพ็กเกจแอปของคุณสำหรับแพลตฟอร์มที่หลากหลายรวมถึง Android, iOS, MacOS และ Windows (แม้ว่าแอปมักจะขาดรูปลักษณ์และความรู้สึกดั้งเดิม)

ด้วยภาษาKVของ Kivy คุณสามารถเขียนโค้ดและสร้างส่วนต่อประสาน GUI ได้อย่างง่ายดาย (เหมือนกับ Java XML แต่แทนที่จะเป็น TextView เป็นต้น KV มีภาษาของตัวเองui.widgetsสำหรับการแปลที่คล้ายกัน) ซึ่งในความคิดของฉันนั้นค่อนข้างง่ายที่จะนำมาใช้

ปัจจุบันBuildozerและpython-for-androidเป็นเครื่องมือที่แนะนำมากที่สุดในการสร้างและจัดทำแอพของคุณ ฉันลองพวกเขาทั้งสองและสามารถพูดได้อย่างมั่นคงว่าพวกเขาสร้างแอพ Android ด้วย Python อย่างง่ายดาย ไกด์ของพวกเขาก็มีเอกสารที่ดีเช่นกัน

iOS เป็นอีกหนึ่งจุดขายที่สำคัญของ Kivy คุณสามารถใช้ฐานรหัสเดียวกันโดยมีการเปลี่ยนแปลงเล็กน้อยที่จำเป็นผ่านเครื่องมือ kivy-ios Homebrew แม้ว่า Xcode จะต้องใช้สำหรับการสร้างก่อนที่จะทำงานบนอุปกรณ์ของพวกเขา (AFAIK ตัวจำลอง iOS ใน Xcode ในปัจจุบันไม่สามารถใช้งานได้สำหรับสถาปัตยกรรม x86) . นอกจากนี้ยังมีปัญหาการพึ่งพาซึ่งต้องรวบรวมและแก้ไขด้วยตนเองใน Xcode เพื่อสร้างงานที่ประสบความสำเร็จ แต่พวกเขาก็ไม่ยากเกินกว่าที่จะแก้ไขได้และผู้คนในKivy Google Groupก็เป็นประโยชน์เช่นกัน

จากสิ่งที่กล่าวมาทั้งหมดผู้ใช้ที่มีความรู้เกี่ยวกับ Python ที่ดีจะไม่มีปัญหาในการเก็บข้อมูลพื้นฐานอย่างรวดเร็ว

หากคุณกำลังใช้ Kivy สำหรับโครงการที่จริงจังกว่านี้คุณอาจพบว่าโมดูลที่มีอยู่ไม่น่าพอใจ มีวิธีแก้ปัญหาบางอย่างที่ใช้การได้ ด้วยpyjnius (กำลังดำเนินการ) สำหรับ Android และpyobjusผู้ใช้สามารถเข้าถึงคลาส Java / Objective-C เพื่อควบคุม API ดั้งเดิมบางตัว


ฉันเพิ่งดาวน์โหลด Kivy จากเว็บไซต์ของมัน แสดงการรองรับ Python 3.4 32 และ 64 บิตและการสาธิตการทำงานของอินพุตแบบสัมผัส
codeReview

1
@ codeReview ฉันใช้ Kivy กับ Python2 เท่านั้นและไม่มีประสบการณ์กับ Python3 ทุกอย่างทำงานได้อย่างราบรื่นหรือไม่
Anzel

ฉันจะแจ้งให้คุณทราบอย่างหวังในไม่ช้า แต่ฉันไม่เคยมีประสบการณ์กับ Python นอกไฟล์. py ของ CPython 3.4 สำหรับการแก้ปัญหาการคำนวณหรืออัลกอริทึมอย่างรวดเร็ว นี่จะเป็นแอพแรกที่มี GUI ฉันต้องอ่านเอกสารเพิ่มเติมเพื่อทำความเข้าใจภาษา Kivy และทำตามขั้นตอนการติดตั้งอย่างระมัดระวังดังนั้นฉันรู้วิธีติดตั้ง Kivi ให้กับPython IDE ของฉันที่เลือกและบรรจุ APK เพื่อผลักดันไปยัง Android กระบวนการนี้มีหลายขั้นตอนดังนั้นจึงอาจไม่น่าเหลือเชื่อเมื่อฉันสามารถพูดได้
codeReview

1
@ codeReview โชคดีสำหรับการเดินทางของคุณ หากนี่เป็นแอปแรกของคุณฉันขอแนะนำให้ใช้. kvเป็นไฟล์เลย์เอาต์ มันก็เหมือนกับ yaml หรือไฟล์ต้นไม้เพื่อกำหนดวิดเจ็ตเลย์เอาต์ หากแอพของคุณเป็นหลายหน้าจอ / เลย์เอาต์ให้ใช้ScreenManagerวิธีนี้จะช่วยให้คุณประหยัดเวลาได้มาก นอกจากนี้ยังมีคำแนะนำคือการอ่านรายชื่อผู้รับจดหมายกลุ่มคนที่มีความรู้ที่เต็มใจช่วยเหลือคุณ
Anzel

1
@codeReview แทนการเรียนรู้จากแอพตัวอย่างของ Kivy คุณอาจได้รับข้อมูลเชิงลึกมากขึ้นในการค้นหาแอพ kivy ที่มีอยู่และดูว่าผู้คนจัดการ "วิดเจ็ต" และการโทรกลับในสถานการณ์จริงได้อย่างไร Kivy ไม่ยากที่จะเรียนรู้เลยฉันจะพูดง่ายกว่าในแง่ของเส้นโค้งการเรียนรู้มากกว่าพูดใน Java + Android หรือ
Object

40

Termux

คุณสามารถใช้แอพTermuxซึ่งจัดเตรียมสภาพแวดล้อม POSIX สำหรับ Android เพื่อติดตั้ง Python

โปรดทราบว่าapt install pythonจะติดตั้ง Python3 บน Termux สำหรับ Python2, apt install python2คุณจำเป็นต้องใช้


5
+1 สำหรับ Termux สภาพแวดล้อมที่ยอดเยี่ยมอย่างแน่นอนในการทำงานเลือกแพคเกจที่ยอดเยี่ยมใน repos ปุ่มลัดระดับเสียงที่มีประโยชน์ มันเป็นสิ่งที่ใกล้เคียงที่สุดกับเดเบียนทางโทรศัพท์ที่ฉันเคยพบ
James

39

ไม่ในขณะนี้และคุณจะโชคดีที่ได้รับ Jython มาทำงานในไม่ช้า หากคุณวางแผนที่จะเริ่มการพัฒนาของคุณตอนนี้คุณน่าจะดีขึ้นด้วยการใช้ Java เป็นหลัก


39

ใช้ SL4A (ซึ่งได้รับการกล่าวถึงตัวเองในคำตอบอื่น ๆ ) คุณสามารถทำงานได้เต็มรูปแบบเป่าweb2pyอินสแตนซ์ (อื่น ๆหลามกรอบเว็บมีผู้สมัครที่มีโอกาสเช่นกัน) SL4A ไม่ได้ช่วยให้คุณทำองค์ประกอบพื้นเมือง UI (ปุ่มแถบเลื่อนและชอบ) แต่มันก็ไม่สนับสนุนมุมมองเว็บ โดยทั่วไปแล้ว WebView ไม่มีอะไรมากไปกว่าเว็บเบราว์เซอร์ที่มีแถบเลื่อนลงซึ่งชี้ไปยังที่อยู่ที่แน่นอน ฉันเชื่อว่าแอป Gmail พื้นเมืองใช้ WebView แทนที่จะไปตามเส้นทางวิดเจ็ตปกติ

เส้นทางนี้จะมีคุณสมบัติที่น่าสนใจ:

  • ในกรณีส่วนใหญ่ของเว็บไพ ธ อนเฟรมเวิร์คคุณสามารถพัฒนาและทดสอบได้โดยไม่ต้องใช้อุปกรณ์ android หรือ android emulator
  • ไม่ว่ารหัส Python ที่คุณเขียนด้วยโทรศัพท์จะเป็นเว็บเซิร์ฟเวอร์สาธารณะที่มีการดัดแปลงน้อยมาก (ถ้ามี)
  • คุณสามารถใช้ประโยชน์จากสิ่งที่มีอยู่ในเว็บทั้งหมด: แบบสอบถาม, HTML5, CSS3 เป็นต้น

2
Cherrypy ทำงานได้ดีด้วยการสนับสนุน ws4py websocket ขวดยังใช้ได้กับ SL4A
Carl Smith

33

QPython

ผมใช้แอปพลิเค QPython ฟรีและรวมถึงเครื่องมือแก้ไขรหัสล่ามแบบอินเทอร์แอคทีฟและตัวจัดการแพ็คเกจช่วยให้คุณสร้างและดำเนินการโปรแกรม Python บนอุปกรณ์ของคุณได้โดยตรง


2
ตอนนี้ qpython เพิ่มการสนับสนุน Django! นั่นคือทั้งหมดที่ฉันต้องการ! ! ที่น่าตื่นตาตื่นใจ
swdev

27

จากไซต์Python สำหรับ Android :

Python สำหรับ Android เป็นโครงการสำหรับสร้างการแจกจ่าย Python ของคุณเองรวมถึงโมดูลที่คุณต้องการและสร้าง apk ซึ่งรวมถึง python, libs และแอปพลิเคชันของคุณ


1
@ e-Satis: ขอบคุณสำหรับความคิดเห็นของคุณ ฉันไม่เห็นคำตอบที่ฉันกำลังทำซ้ำ ฉันเดาได้แค่ว่าคุณคิดว่า PFA เหมือนกับ Kivy แม้ว่าจะเป็นโฮสต์ภายใต้โครงการ Kivy คุณไม่จำเป็นต้องใช้ Kivy เพื่อใช้ PFA
gdw2

ตรวจสอบคำตอบที่ถูกลบของ @ tito ที่จุดล่างสุดถึง PFA นอกจากนี้ยังมีความสนใจเพียงเล็กน้อยที่ใช้งาน PFA โดยที่ไม่มี kivy เนื่องจากเป็นชุดเครื่องมือเดียวที่คุณได้รับ
E-satis

ไม่ใช่เพราะ kivy เป็นชุดเครื่องมือเดียวที่มีให้บริการ (บางคนกำลังทำงานเพื่อกระตุ้นผู้อื่น) มากกว่าที่ซ้ำกัน โปรดพิจารณาตัวเลือกอื่น ๆ ตามสมควรและไม่รวมทั้งหมดไว้ในโพสต์เดียว: |
tito

21

Chaquopy

Chaquopyเป็นปลั๊กอินสำหรับระบบสร้าง Gradle-based ของ Android Studio มันมุ่งเน้นไปที่การรวมอย่างใกล้ชิดกับเครื่องมือพัฒนามาตรฐาน Android

  • มันมี API ที่สมบูรณ์ในการเรียกJava จาก PythonหรือPython จาก Javaช่วยให้นักพัฒนาสามารถใช้ภาษาใดก็ได้ที่ดีที่สุดสำหรับแต่ละองค์ประกอบของแอพ

  • สามารถดาวน์โหลดแพ็คเกจ PyPIโดยอัตโนมัติและสร้างเป็นแอพรวมถึงแพ็คเกจดั้งเดิมที่เลือกเช่น NumPy

  • ช่วยให้เข้าถึง API Android ทั้งหมดได้อย่างสมบูรณ์จาก Python รวมถึงชุดเครื่องมืออินเทอร์เฟซผู้ใช้ดั้งเดิม ( ตัวอย่างกิจกรรม pure-Python )

นี่เป็นผลิตภัณฑ์เชิงพาณิชย์ แต่มันฟรีสำหรับการใช้โอเพนซอร์ซและจะยังคงเป็นเช่นนั้นเสมอไป

(ฉันเป็นผู้สร้างผลิตภัณฑ์นี้)



20

นี่คือเครื่องมือบางอย่างที่ระบุไว้ในเว็บไซต์ไพ ธ อนอย่างเป็นทางการ


มีแอพที่เรียกว่าQPython3ใน playstore ซึ่งสามารถใช้สำหรับทั้งการแก้ไขและการเรียกใช้สคริปต์ไพ ธ อน

ลิงก์ Playstore


แอปอื่นที่ชื่อว่าTermuxซึ่งคุณสามารถติดตั้ง python ได้โดยใช้คำสั่ง

pkg install python

ลิงก์ของ Playstore


หากคุณต้องการการพัฒนาแอพพลิเคมีงูหลาม Android Scripting Layer ( SL4A )

The Scripting Layer for Android, SL4A, is an open source application that allows programs written in a range of interpreted languages to run on Android. It also provides a high level API that allows these programs to interact with the Android device, making it easy to do stuff like accessing sensor data, sending an SMS, rendering user interfaces and so on.


นอกจากนี้คุณยังสามารถตรวจสอบPySide สำหรับ Androidซึ่งจริง ๆ แล้วเป็น Python bindings สำหรับ Qt 4


มีแพลตฟอร์มที่ชื่อว่าPyMobซึ่งสามารถเขียนแอพได้อย่างหมดจดใน Python และคอมไพเลอร์ tool-flow (PyMob) แปลงมันเป็นซอร์สโค้ดดั้งเดิมสำหรับแพลตฟอร์มต่างๆ


ตรวจสอบpython สำหรับ Android ด้วย

python-for-android is an open source build tool to let you package Python code into standalone android APKs. These can be passed around, installed, or uploaded to marketplaces such as the Play Store just like any other Android app. This tool was originally developed for the Kivy cross-platform graphical framework, but now supports multiple bootstraps and can be easily extended to package other types of Python apps for Android.


ลองChaquopy A Python SDK สำหรับ Android


และอื่น ๆ ... BeeWare

BeeWare allows you to write your app in Python and release it on multiple platforms. No need to rewrite the app in multiple programming languages. It means no issues with build tools, environments, compatibility, etc.


2
ใช้ Termux คุณสามารถติดตั้ง python 2 ได้เช่นกัน $ apt ติดตั้ง python2
M.Hefny

16

คุณสามารถเรียกใช้รหัสหลามของคุณโดยใช้SL4A sl4a รองรับ Python, Perl , JRuby , Lua , BeanShell, JavaScript, Tclและเชลล์สคริปต์

คุณสามารถเรียนรู้ SL4A ตัวอย่างหลาม


13

คุณสามารถใช้QPython :

มันมี Python Console, Editor, และ Package Management / Installers

http://qpython.com/

เป็นโครงการโอเพ่นซอร์สที่มีทั้งการใช้งาน Python 2 และ Python 3 คุณสามารถดาวน์โหลดซอร์สและไฟล์ Android .apk ได้โดยตรงจาก github

QPython 2: https://github.com/qpython-android/qpython/releases

QPython 3: https://github.com/qpython-android/qpython3/releases


12

ตัวเลือกอื่นหากคุณกำลังมองหา 3.4.2 หรือ 3.5.1 เป็นที่เก็บถาวรนี้ใน GitHub

Python3-Android 3.4.2หรือPython3-Android 3.5.1

ปัจจุบันรองรับ Python 3.4.2 หรือ 3.5.1 และ NDK เวอร์ชัน 10d นอกจากนี้ยังสามารถรองรับ 3.3 และ 9c, 11c และ 12

เป็นเรื่องที่ดีที่คุณเพียงแค่ดาวน์โหลดเรียกใช้ make และคุณจะได้รับ. so หรือ. a

ฉันใช้สิ่งนี้เพื่อเรียกใช้ Python แบบ raw บนอุปกรณ์ Android ด้วยการดัดแปลงไฟล์บิวด์สองสามอย่างคุณสามารถสร้าง x86 และ armeabi 64 บิตได้


11

ไม่เห็นโพสต์ที่นี่ แต่คุณสามารถทำได้ด้วย Pyside และ Qt ตอนนี้ที่ Qt ทำงานบน Android ด้วย Necessitas

ดูเหมือนว่าจะเป็นกระบองในขณะนี้ แต่อาจเป็นเส้นทางที่ทำงานได้ในที่สุด ...

http://qt-project.org/wiki/PySide_for_Android_guide


9

อีกทางเลือกหนึ่งน่าจะเป็นpyqtdeployซึ่งอ้างถึงเอกสารคือ:

เครื่องมือที่ใช้ร่วมกับเครื่องมืออื่น ๆ ที่มีมาพร้อมกับ Qt ทำให้สามารถปรับใช้แอปพลิเคชั่น PyQt4 และ PyQt5 ที่เขียนด้วย Python v2.7 หรือ Python v3.3 หรือใหม่กว่า รองรับการปรับใช้กับแพลตฟอร์มเดสก์ท็อป (Linux, Windows และ OS X) และแพลตฟอร์มมือถือ (iOS และ Android)

อ้างอิงจากการปรับใช้แอพพลิเคชั่น PyQt5 ไปยัง Android ผ่าน pyqtdeploy และ Qt5มันได้รับการพัฒนาอย่างแข็งขันแม้ว่ามันจะเป็นเรื่องยากที่จะหาตัวอย่างของแอพ Android ที่ใช้งานได้หรือการสอนเกี่ยวกับวิธีการรวบรวมไลบรารีทั้งหมด มันเป็นโครงการที่น่าสนใจที่ต้องจำไว้!


6

ลองดูที่BeeWare ในขณะที่ตอบคำถามนี้มันยังอยู่ในช่วงพัฒนาเร็ว เป้าหมายคือเพื่อให้สามารถสร้างแอพที่มี Python สำหรับระบบปฏิบัติการที่รองรับทั้งหมดรวมถึง Android


อะไรคือความแตกต่างของโทอิคีวี่? มันเป็นงูเหลือมพกพาที่มีเสถียรภาพจาก Gui
Carsten Thielepape

5

ลองดูenaml-nativeที่ใช้คอนเซ็ปต์ react-native และใช้กับ python

มันช่วยให้ผู้ใช้สร้างแอพที่มีวิดเจ็ต Android ดั้งเดิมและจัดหา API เพื่อใช้ Android และไลบรารี Java จาก python

นอกจากนี้ยังทำงานร่วมกับ android-studio และแบ่งปันคุณสมบัติ dev บางอย่างของการโต้ตอบเช่นการโหลดรหัสและการดีบักระยะไกล

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.