จะพัฒนาแอพ Android โดยใช้ python ได้อย่างไร? [ปิด]


118

ฉันต้องการพัฒนาแอป Android (ค่อนข้างง่าย) เพื่อเผยแพร่ผ่าน Play Store ฉันต้องการทำอย่างสมบูรณ์ใน python อย่างไรก็ตามการวิจัยออนไลน์ไม่ได้ให้ความกระจ่างแก่ฉันมากนักความคิดเห็นส่วนใหญ่อาจล้าสมัยไปแล้ว (> 1 ปีและฉันรู้สึกว่าอาจมีการรวม python ที่ดีขึ้นตั้งแต่นั้นมา) หรือพวกเขาพูดถึงการเรียกใช้ pythonใน Android (เช่นที่นี่ )

ดังนั้นฉันกำลังมองหาข้อมูลเกี่ยวกับคำถาม:

  • เป็นไปได้หรือไม่ที่จะพัฒนา App อย่างสมบูรณ์ใน python - และมีเครื่องมืออะไรในการทำเช่นนั้น? (เช่น Kivy แนะนำได้หรือไม่?)
  • ถ้าเป็นเช่นนั้น: สภาพแวดล้อมซอฟต์แวร์ที่ดีที่สุดในการนำไปใช้คืออะไร? (ฉันพยายามใช้ Android Studio ไม่สำเร็จ แต่ไม่สามารถหาวิธีเรียกใช้โค้ด python ได้ที่นั่น)

ฉันค่อนข้างใหม่สำหรับการพัฒนาแอปและขอขอบคุณอย่างมากที่มีโอกาสเป็นผู้นำในการทำสิ่งนี้ใน python มากกว่าใน Jave เป็นต้นซึ่งฉันยังไม่รู้

ขอบคุณมากสำหรับความช่วยเหลือล่วงหน้า


1
ในอดีตฉันใช้ kivy และโปรแกรม buildozer พวกเขามีเอกสารที่นี่kivy.org/docs/guide/packaging-android.html
es

คุณต้องใช้ Java หรือ Kotlin แต่ตามที่คนอื่น ๆ ชี้ให้เห็นว่ามี "app-builders" หรือเฟรมเวิร์กของบุคคลที่สามที่คุณสามารถใช้กับ python เช่น PyMob หรือ Kivy
Dominik Schmidt

9
ฉันสร้างเกม Android ที่พัฒนาใน Python โดยใช้ Kivy มันถูกเรียกว่า CoinTex มีที่นี่ที่ Google Play: play.google.com/store/apps/details?id=coin.tex.cointexreactfast รหัสที่มาของเกมที่มีอยู่ที่นี่ที่ GitHub: github.com/ahmedfgad/CoinTex ฉันยังเขียนหนังสือที่จะตีพิมพ์ในปีนี้สำหรับการสร้างแอพ Android โดยใช้ Python มันมีบรรดาศักดิ์เป็น "อาคาร Android ปพลิเคชันในหลามใช้ Kivy กับ Android Studio: ด้วย Pyjnius, Plyer และ Buildozer อาเหม็ด Fawzy กาด" ที่นี่ที่ Amazon: amazon.com/dp/1484250303
Ahmed Gad

1
ไม่สามารถโพสต์คำตอบได้ แต่ที่นี่ดูเหมือนจะเป็นวิธีแก้ปัญหา : จะมีการสาธิตเทคโนโลยีที่แตกต่างกันซึ่งรวมถึง QML GUI ที่ใช้ PySide โดยใช้พอร์ต N Prioritas Qt และแนวทางที่ใช้ Py4A / SL4A ซึ่งสามารถใช้ร่วมกับ WebKit ของ Android - ใช้เฟรมเวิร์กเว็บ Python
Basj

ฉันไม่เข้าใจว่าทำไมจึงปิดคำถามนี้ มันควรจะเปิดใหม่
cknoll

คำตอบ:


122

เพื่อตอบคำถามแรกของคุณ: ใช่เป็นไปได้ที่จะพัฒนาแอปพลิเคชัน Android ใน python บริสุทธิ์เพื่อให้บรรลุเป้าหมายนี้ฉันขอแนะนำให้คุณใช้BeeWareซึ่งเป็นเพียงชุดเครื่องมือ pythonซึ่งทำงานร่วมกันได้เป็นอย่างดีและช่วยให้คุณสามารถพัฒนาได้ แอปพลิเคชันเนทีฟของแพลตฟอร์มใน python

ชำระเงินวิดีโอนี้โดยผู้สร้าง BeeWare ที่อธิบายและสาธิตการใช้งานได้อย่างสมบูรณ์แบบ

มันทำงานอย่างไร

ภาษาที่ต้องการใช้งานของ Android คือ Java - ดังนั้นหากคุณต้องการเขียนแอปพลิเคชัน Android ใน Python คุณต้องมีวิธีเรียกใช้โค้ด Python บน Java Virtual Machine นี่คือสิ่งที่VOCทำ VOCเป็นตัวส่งสัญญาณ - โดยใช้ซอร์สโค้ด Python คอมไพล์เป็น CPython Bytecode จากนั้นจะถ่ายโอนไบต์โค้ดนั้นไปยัง bytecode ที่เข้ากันได้กับ Java ผลลัพธ์สุดท้ายคือไฟล์ซอร์สโค้ด Python ของคุณจะถูกคอมไพล์โดยตรงไปยังไฟล์ Java .class ซึ่งสามารถบรรจุลงในแอปพลิเคชัน Android

VOC ยังช่วยให้คุณเข้าถึงวัตถุ Java ดั้งเดิมราวกับว่าเป็นวัตถุ Python ใช้อินเตอร์เฟส Java กับคลาส Python และคลาสย่อย Java กับคลาส Python เมื่อใช้สิ่งนี้คุณสามารถเขียนแอปพลิเคชัน Android โดยตรงกับ Android APIs

เมื่อคุณเขียนแอปพลิเคชัน Android ดั้งเดิมของคุณแล้วคุณสามารถใช้Briefcaseเพื่อจัดแพ็กเกจโค้ด Python ของคุณเป็นแอปพลิเคชัน Android

Briefcaseเป็นเครื่องมือสำหรับแปลงโปรเจ็กต์ Python เป็นแอปพลิเคชันเนทีฟแบบสแตนด์อโลน คุณสามารถจัดแพ็คเกจโครงการสำหรับ:

  • Mac
  • Windows
  • ลินุกซ์
  • iPhone / iPad
  • Android
  • AppleTV
  • tvOS

คุณสามารถตรวจสอบแอป Android Tic Tac Toeดั้งเดิมที่เขียนด้วยภาษา Python โดยใช้ชุด BeeWare บน GitHub

นอกจากเครื่องมือ BeeWare แล้วคุณจะต้องติดตั้ง JDK และ Android SDK เพื่อทดสอบการเรียกใช้แอปพลิเคชันของคุณ

และเพื่อตอบคำถามที่สองของคุณ: สภาพแวดล้อมที่ดีอาจเป็นอะไรก็ได้ที่คุณพอใจไม่ว่าจะเป็นโปรแกรมแก้ไขข้อความและบรรทัดคำสั่งหรือ IDE หากคุณกำลังมองหา python IDE ที่ดีฉันขอแนะนำให้คุณลองใช้Pycharmมันมี ฉบับชุมชนที่ให้บริการฟรีและมีสภาพแวดล้อมคล้ายกับสตูดิโอ Android เนื่องจากข้อเท็จจริงที่ทำโดย บริษัท เดียวกัน

ฉันหวังว่านี่จะเป็นประโยชน์


2
เป็นเพียงฉันหรือ VOC ถูกละทิ้ง?
คดีของ Fund Monica

2
นี่คือทางตัน (ครั้งสุดท้ายที่ฉันตรวจสอบ: ธันวาคม 2018) ส่วนประกอบอย่างน้อยหนึ่งรายการในโซลูชันที่ซับซ้อนเกินไปนี้ไม่ทำงานอีกต่อไปหรือไม่สามารถอัปเดตตัวเองได้
Berry Tsakala

2
เป็นเพียงการอัปเดตสำหรับปี 2019 แต่ Kotlin เป็นภาษาที่ต้องการสำหรับการพัฒนา Android
DaveTheMinion

3
@Basj ฉันอยากจะบอกว่า Beeware จะอยู่ในช่วงเวลาหนึ่งแน่นอนเพราะเพียงแค่ดูที่บัญชี GitHub คุณจะพบว่ามีการพัฒนาอย่างต่อเนื่องและหากคุณตรงไปที่ช่อง Gitter คุณสามารถทำได้ เข้าถึงทั้งทีมเสมอโดยเฉพาะอย่างยิ่ง Dr Russell (freakyboy) ผู้สร้างและชุมชนค่อนข้างเป็นมิตรและยังมีทวีตล่าสุด (Sep 26 2019) ทวีตจากบัญชีทางการของพวกเขาที่ประกาศว่าพวกเขาได้รับทุนการศึกษาจาก Python รากฐานซอฟต์แวร์ ฉันคิดว่ามันจะคุ้มค่ากับเวลาของคุณโดยเฉพาะถ้าคุณชอบ python เป็นภาษา
maroof shittu

1
BeeWare ดูเหมือนจะไม่รองรับ Android (Java) ในขั้นตอนนี้ไม่ว่าในกรณีใด ๆ
Mark Anderson

15

คุณสามารถลองใช้BeeWare ได้ตามที่อธิบายไว้ในเว็บไซต์:

เขียนแอพของคุณใน Python และเผยแพร่บน iOS, Android, Windows, MacOS, Linux, เว็บและ tvOS โดยใช้อินเทอร์เฟซผู้ใช้ที่หลากหลาย โค้ดเบสเดียว หลายแอพ

ช่วยให้คุณต้องการที่จะเขียนแอพ Android ใน Python ในขณะนี้และมีข้อได้เปรียบที่คุณไม่จำเป็นต้องเรียนรู้กรอบงานอื่นในอนาคตหากคุณต้องการทำอะไรบางอย่างบนแพลตฟอร์มอื่น ๆ ที่อยู่ในรายการ

นี่คือการสอนสำหรับ Android Apps


5
คุณสร้างแอปด้วย BeeWare หรือไม่?
Berry Tsakala

12

มีผู้แข่งขันหลักสองรายสำหรับแอป python บน Android

Chaquopy

https://chaquo.com/chaquopy/

สิ่งนี้รวมเข้ากับระบบสร้าง Android โดยมี Python API สำหรับคุณสมบัติทั้งหมดของ Android หากต้องการอ้างอิงไซต์ "Android API ที่สมบูรณ์และชุดเครื่องมืออินเทอร์เฟซผู้ใช้อยู่ที่การกำจัดของคุณโดยตรง"

ระวัง (ชุดเครื่องมือเครื่องมือ Toga)

https://pybee.org/

สิ่งนี้มีทรานสไพเลอร์หลายเป้าหมายรองรับเป้าหมายจำนวนมากเช่น Android และ iOS ใช้ชุดเครื่องมือวิดเจ็ตทั่วไป (toga) ที่แมปกับการเรียกอินเทอร์เฟซโฮสต์

อันไหน?

ทั้งสองเป็นโครงการที่ใช้งานอยู่และบัญชี Github ของพวกเขาแสดงกิจกรรมล่าสุดจำนวนพอสมควร

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

ในทางกลับกัน Chaquopy มีความแม่นยำมากขึ้นในการทำแผนที่ python API กับ Android นอกจากนี้ยังช่วยให้คุณสามารถผสมใน Java ซึ่งมีประโยชน์หากคุณต้องการใช้โค้ดที่มีอยู่จากทรัพยากรอื่น ๆ หากคุณมีเป้าหมายการออกแบบที่เข้มงวดและส่วนใหญ่ต้องการกำหนดเป้าหมาย Android นี่เป็นทรัพยากรที่ดีกว่ามาก


11

Android, Python!

เมื่อฉันเห็นคำหลักสองคำนี้ร่วมกันในคำถามของคุณKivyคือคำหลักที่อยู่ในใจของฉันเป็นอันดับแรก

โลโก้ Kivy

ก่อนที่จะมาพัฒนา Android พื้นเมืองใน Java โดยใช้ Android สตูดิโอ, ฉันได้พยายามKivy มันยอดเยี่ยมมาก นี่คือข้อดีบางประการที่ฉันสามารถหาได้


ใช้งานง่าย

ด้วยพื้นฐาน Python คุณจะไม่มีปัญหาในการเรียนรู้


ชุมชนที่ดี

มีการบันทึกไว้อย่างดีและมีชุมชนที่ดีและกระตือรือร้น


ข้ามแพลตฟอร์ม

คุณสามารถพัฒนาสิ่งต่างๆสำหรับ Android, iOS, Windows, Linux และแม้แต่ Raspberry Pi ด้วยกรอบงานเดียวนี้ โอเพ่นซอร์ส.


เป็นซอฟต์แวร์ฟรี

คู่แข่งอย่างน้อย (ข้ามแพลตฟอร์ม) ต้องการให้คุณจ่ายค่าธรรมเนียมหากคุณต้องการใบอนุญาตเชิงพาณิชย์


รองรับกราฟิกแบบเร่ง

เอ็นจิ้นกราฟิกของKivyสร้างขึ้นบน OpenGL ES 2 ทำให้เหมาะสำหรับซอฟต์แวร์ที่ต้องการการแสดงผลกราฟิกที่รวดเร็วเช่นเกม



ในส่วนถัดไปของคำถามคุณไม่สามารถใช้ Android Studio IDE สำหรับ Kivy ได้ นี่คือคำแนะนำโดยละเอียดสำหรับการตั้งค่าสภาพแวดล้อมการพัฒนา


6
การรองรับ Windows ล้าหลังกว่ามาตรฐานการผลิต (หรือแม้แต่มาตรฐานงานอดิเรก) นอกจากนี้ครึ่งหนึ่งของโลกไม่สามารถใช้งานได้เนื่องจากขาดการสนับสนุน RTL
Berry Tsakala

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