คำตอบ:
วิธีหนึ่งคือใช้Kivy :
ไลบรารี Python แบบโอเพนซอร์สสำหรับการพัฒนาแอปพลิเคชั่นที่รวดเร็วซึ่งใช้ประโยชน์จากส่วนต่อประสานผู้ใช้ที่เป็นนวัตกรรมเช่นแอพมัลติทัช
Kivy ทำงานบน Linux, Windows, OS X, Android และ iOS คุณสามารถเรียกใช้รหัส [python] เดียวกันบนแพลตฟอร์มที่รองรับได้ทั้งหมด
นอกจากนี้ยังมีโครงการAndroid Scripting Environment (ASE / SL4A) ใหม่ มันดูยอดเยี่ยมและมีการรวมเข้ากับส่วนประกอบ Android ดั้งเดิม
หมายเหตุ: ไม่อยู่ภายใต้ "การพัฒนาที่ใช้งานอยู่" แต่ส้อมบางอย่างอาจเป็น
ใช่ : สภาพแวดล้อมการเขียนสคริปต์ 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)
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']))
Pygameเป็นเครื่องมือเกม 2 มิติสำหรับ Python (บนเดสก์ท็อป) ซึ่งเป็นที่นิยมของโปรแกรมเมอร์ใหม่ ชุดข้อมูลPygame สำหรับ Androidอธิบายตัวเองว่า ...
... พอร์ตของชุดย่อยของฟังก์ชัน Pygame ไปยังแพลตฟอร์ม Android เป้าหมายของโครงการนี้คือการอนุญาตให้สร้างเกมเฉพาะสำหรับ Android และเพื่อลดความยุ่งยากในการย้ายเกมจากแพลตฟอร์มที่เหมือนกับพีซีไปจนถึง Android
ตัวอย่างประกอบด้วยเกมที่สมบูรณ์ซึ่งบรรจุใน APK ซึ่งน่าสนใจทีเดียว
บล็อกของฉันมีคำแนะนำและตัวแก้ไขสำหรับการคอมไพล์ข้าม Python 2.7.2 สำหรับ Android
ฉันได้เปิดIgnifugaซึ่งเป็นแหล่งเกมเครื่องยนต์ 2 มิติของฉันด้วย มันใช้ Python / SDL และข้ามคอมไพล์สำหรับ Android แม้ว่าคุณจะไม่ได้ใช้มันสำหรับเกมคุณอาจได้รับแนวคิดที่เป็นประโยชน์จากโค้ดหรือเครื่องมือสร้าง (ชื่อSchaferหลังจาก Tim ... คุณรู้จักใคร)
SL4Aทำในสิ่งที่คุณต้องการ คุณสามารถติดตั้งลงในอุปกรณ์ของคุณได้โดยตรงจากเว็บไซต์ของพวกเขาและไม่จำเป็นต้องรูท
รองรับหลากหลายภาษา Python เป็นผู้ใหญ่ที่สุด โดยค่าเริ่มต้นจะใช้ Python 2.6 แต่มีพอร์ต 3.2 ที่คุณสามารถใช้แทนได้ ฉันใช้พอร์ตนั้นสำหรับทุกสิ่งบน Galaxy S2 และใช้งานได้ดี
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");
สำหรับส่วนต่อประสานผู้ใช้คุณมีสามตัวเลือก:
คุณสามารถผสมผสานตัวเลือกต่าง ๆ เพื่อให้คุณมี webview สำหรับอินเทอร์เฟซหลักและยังคงใช้กล่องโต้ตอบเนทีฟ
มีโครงการของบุคคลที่สามชื่อเป็นQPython มันสร้างบน SL4A และใช้ประโยชน์อื่น ๆ
QPython ให้ nicer UI ให้คุณจัดการการติดตั้งของคุณและมีตัวแก้ไขโค้ดหน้าจอสัมผัสเล็ก ๆ น้อย ๆ เปลือก Python และ PIP เชลล์สำหรับการจัดการแพ็คเกจ พวกเขายังมีพอร์ต Python 3 ทั้งสองรุ่นมีให้บริการจาก Play Store ฟรี QPython ยังรวมไลบรารีจาก Python จำนวนมากบนโปรเจ็กต์ Android รวมถึง Kivy ด้วยดังนั้นมันจึงไม่ใช่ SL4A
โปรดทราบว่า QPython ยังคงพัฒนา SL4A ของพวกเขา (แม้ว่าจะไม่มากนัก) โครงการหลักของ SL4A นั้นค่อนข้างตายไปแล้ว
ในฐานะที่เป็นคนรักPythonและโปรแกรมเมอร์ Android ฉันเสียใจที่พูดแบบนี้ไม่ได้เป็นวิธีที่ดี มีสองปัญหาคือ
ปัญหาหนึ่งคือมีมากกว่าภาษาการเขียนโปรแกรมในเครื่องมือการพัฒนา Android กราฟิก Android จำนวนมากเกี่ยวข้องกับไฟล์ XML เพื่อกำหนดค่าการแสดงผลคล้ายกับ HTML ออบเจ็กต์ในตัวของ Java นั้นถูกรวมเข้ากับรูปแบบ XML นี้และมันง่ายกว่าการเขียนโค้ดของคุณตั้งแต่ตรรกะไปจนถึงบิตแมป
ปัญหาอื่นคือ G1 (และอาจเป็นอุปกรณ์ Android อื่น ๆ ในอนาคตอันใกล้) นั้นไม่เร็วขนาดนั้น โปรเซสเซอร์ 200 MHz และ RAM มีข้อ จำกัด มาก แม้แต่ในจาวาคุณต้องทำการเขียนซ้ำเพื่อหลีกเลี่ยงการสร้างวัตถุในปริมาณที่เหมาะสมหากคุณต้องการทำให้แอปของคุณราบรื่น Python จะช้าไปสักพักบนอุปกรณ์มือถือ
ฉันต้องการเพิ่มสิ่งที่ @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 ดั้งเดิมบางตัว
ScreenManager
วิธีนี้จะช่วยให้คุณประหยัดเวลาได้มาก นอกจากนี้ยังมีคำแนะนำคือการอ่านรายชื่อผู้รับจดหมายกลุ่มคนที่มีความรู้ที่เต็มใจช่วยเหลือคุณ
คุณสามารถใช้แอพTermuxซึ่งจัดเตรียมสภาพแวดล้อม POSIX สำหรับ Android เพื่อติดตั้ง Python
โปรดทราบว่าapt install python
จะติดตั้ง Python3 บน Termux สำหรับ Python2, apt install python2
คุณจำเป็นต้องใช้
ไม่ในขณะนี้และคุณจะโชคดีที่ได้รับ Jython มาทำงานในไม่ช้า หากคุณวางแผนที่จะเริ่มการพัฒนาของคุณตอนนี้คุณน่าจะดีขึ้นด้วยการใช้ Java เป็นหลัก
ใช้ SL4A (ซึ่งได้รับการกล่าวถึงตัวเองในคำตอบอื่น ๆ ) คุณสามารถทำงานได้เต็มรูปแบบเป่าweb2pyอินสแตนซ์ (อื่น ๆหลามกรอบเว็บมีผู้สมัครที่มีโอกาสเช่นกัน) SL4A ไม่ได้ช่วยให้คุณทำองค์ประกอบพื้นเมือง UI (ปุ่มแถบเลื่อนและชอบ) แต่มันก็ไม่สนับสนุนมุมมองเว็บ โดยทั่วไปแล้ว WebView ไม่มีอะไรมากไปกว่าเว็บเบราว์เซอร์ที่มีแถบเลื่อนลงซึ่งชี้ไปยังที่อยู่ที่แน่นอน ฉันเชื่อว่าแอป Gmail พื้นเมืองใช้ WebView แทนที่จะไปตามเส้นทางวิดเจ็ตปกติ
เส้นทางนี้จะมีคุณสมบัติที่น่าสนใจ:
จากไซต์Python สำหรับ Android :
Python สำหรับ Android เป็นโครงการสำหรับสร้างการแจกจ่าย Python ของคุณเองรวมถึงโมดูลที่คุณต้องการและสร้าง apk ซึ่งรวมถึง python, libs และแอปพลิเคชันของคุณ
Chaquopyเป็นปลั๊กอินสำหรับระบบสร้าง Gradle-based ของ Android Studio มันมุ่งเน้นไปที่การรวมอย่างใกล้ชิดกับเครื่องมือพัฒนามาตรฐาน Android
มันมี API ที่สมบูรณ์ในการเรียกJava จาก PythonหรือPython จาก Javaช่วยให้นักพัฒนาสามารถใช้ภาษาใดก็ได้ที่ดีที่สุดสำหรับแต่ละองค์ประกอบของแอพ
สามารถดาวน์โหลดแพ็คเกจ PyPIโดยอัตโนมัติและสร้างเป็นแอพรวมถึงแพ็คเกจดั้งเดิมที่เลือกเช่น NumPy
ช่วยให้เข้าถึง API Android ทั้งหมดได้อย่างสมบูรณ์จาก Python รวมถึงชุดเครื่องมืออินเทอร์เฟซผู้ใช้ดั้งเดิม ( ตัวอย่างกิจกรรม pure-Python )
นี่เป็นผลิตภัณฑ์เชิงพาณิชย์ แต่มันฟรีสำหรับการใช้โอเพนซอร์ซและจะยังคงเป็นเช่นนั้นเสมอไป
(ฉันเป็นผู้สร้างผลิตภัณฑ์นี้)
อีกความพยายาม: https://code.google.com/p/android-python27/
อันนี้ฝังตัวแปลภาษาไพ ธ อนโดยตรงใน apk แอปของคุณ
นี่คือเครื่องมือบางอย่างที่ระบุไว้ในเว็บไซต์ไพ ธ อนอย่างเป็นทางการ
มีแอพที่เรียกว่าQPython3ใน playstore ซึ่งสามารถใช้สำหรับทั้งการแก้ไขและการเรียกใช้สคริปต์ไพ ธ อน
แอปอื่นที่ชื่อว่าTermuxซึ่งคุณสามารถติดตั้ง python ได้โดยใช้คำสั่ง
pkg install python
หากคุณต้องการการพัฒนาแอพพลิเคมีงูหลาม 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.
คุณสามารถใช้QPython :
มันมี Python Console, Editor, และ Package Management / Installers
เป็นโครงการโอเพ่นซอร์สที่มีทั้งการใช้งาน 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
ตัวเลือกอื่นหากคุณกำลังมองหา 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 บิตได้
ไม่เห็นโพสต์ที่นี่ แต่คุณสามารถทำได้ด้วย Pyside และ Qt ตอนนี้ที่ Qt ทำงานบน Android ด้วย Necessitas
ดูเหมือนว่าจะเป็นกระบองในขณะนี้ แต่อาจเป็นเส้นทางที่ทำงานได้ในที่สุด ...
อีกทางเลือกหนึ่งน่าจะเป็นpyqtdeployซึ่งอ้างถึงเอกสารคือ:
เครื่องมือที่ใช้ร่วมกับเครื่องมืออื่น ๆ ที่มีมาพร้อมกับ Qt ทำให้สามารถปรับใช้แอปพลิเคชั่น PyQt4 และ PyQt5 ที่เขียนด้วย Python v2.7 หรือ Python v3.3 หรือใหม่กว่า รองรับการปรับใช้กับแพลตฟอร์มเดสก์ท็อป (Linux, Windows และ OS X) และแพลตฟอร์มมือถือ (iOS และ Android)
อ้างอิงจากการปรับใช้แอพพลิเคชั่น PyQt5 ไปยัง Android ผ่าน pyqtdeploy และ Qt5มันได้รับการพัฒนาอย่างแข็งขันแม้ว่ามันจะเป็นเรื่องยากที่จะหาตัวอย่างของแอพ Android ที่ใช้งานได้หรือการสอนเกี่ยวกับวิธีการรวบรวมไลบรารีทั้งหมด มันเป็นโครงการที่น่าสนใจที่ต้องจำไว้!
ลองดูที่BeeWare ในขณะที่ตอบคำถามนี้มันยังอยู่ในช่วงพัฒนาเร็ว เป้าหมายคือเพื่อให้สามารถสร้างแอพที่มี Python สำหรับระบบปฏิบัติการที่รองรับทั้งหมดรวมถึง Android
ลองดูenaml-nativeที่ใช้คอนเซ็ปต์ react-native และใช้กับ python
มันช่วยให้ผู้ใช้สร้างแอพที่มีวิดเจ็ต Android ดั้งเดิมและจัดหา API เพื่อใช้ Android และไลบรารี Java จาก python
นอกจากนี้ยังทำงานร่วมกับ android-studio และแบ่งปันคุณสมบัติ dev บางอย่างของการโต้ตอบเช่นการโหลดรหัสและการดีบักระยะไกล