Câu trả lời:
Một cách là sử dụng Kivy :
Thư viện Python mã nguồn mở để phát triển nhanh chóng các ứng dụng sử dụng giao diện người dùng sáng tạo, chẳng hạn như các ứng dụng đa chạm.
Kivy chạy trên Linux, Windows, OS X, Android và iOS. Bạn có thể chạy cùng mã [python] trên tất cả các nền tảng được hỗ trợ.
Ngoài ra còn có dự án Môi trường kịch bản Android (ASE / SL4A) mới. Nó trông tuyệt vời, và nó có một số tích hợp với các thành phần Android gốc.
Lưu ý: không còn dưới "phát triển tích cực", nhưng một số nhánh có thể.
Đúng! : Môi trường tập lệnh Android
Một ví dụ thông qua Matt Cutts qua SL4A - "đây là máy quét mã vạch được viết bằng sáu dòng mã 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 là một công cụ trò chơi 2D cho Python (trên máy tính để bàn) rất phổ biến với các lập trình viên mới. Các Pygame tập hợp con dành cho Android mô tả bản thân như ...
... một cổng của một tập hợp con chức năng Pygame cho nền tảng Android. Mục tiêu của dự án là cho phép tạo ra các trò chơi dành riêng cho Android và để dễ dàng chuyển các trò chơi từ các nền tảng giống như PC sang Android.
Các ví dụ bao gồm một trò chơi hoàn chỉnh được đóng gói dưới dạng APK, khá thú vị.
Blog của tôi có hướng dẫn và bản vá để biên dịch chéo Python 2.7.2 cho Android.
Tôi cũng đã mở Ignifuga , Công cụ trò chơi 2D của tôi. Nó dựa trên Python / SDL và nó biên dịch chéo cho Android. Ngay cả khi bạn không sử dụng nó cho các trò chơi, bạn có thể nhận được những ý tưởng hữu ích từ mã hoặc tiện ích trình tạo (có tên Schafer , sau Tim ... bạn biết ai).
SL4A làm những gì bạn muốn. Bạn có thể dễ dàng cài đặt nó trực tiếp lên thiết bị của mình từ trang web của họ và không cần root.
Nó hỗ trợ một loạt các ngôn ngữ. Python là người trưởng thành nhất. Theo mặc định, nó sử dụng Python 2.6, nhưng có một cổng 3.2 bạn có thể sử dụng thay thế. Tôi đã sử dụng cổng đó cho tất cả các loại trên Galaxy S2 và nó hoạt động tốt.
SL4A cung cấp một cổng android
thư viện của họ cho mỗi ngôn ngữ được hỗ trợ. Thư viện cung cấp giao diện cho API Android bên dưới thông qua một Android
đối tượng.
from android import Android
droid = Android()
droid.ttsSpeak('hello world') # example using the text to speech facade
Mỗi ngôn ngữ có khá nhiều API giống nhau. Bạn thậm chí có thể sử dụng API JavaScript trong các lần xem web.
let droid = new Android();
droid.ttsSpeak("hello from js");
Đối với giao diện người dùng, bạn có ba tùy chọn:
Bạn có thể kết hợp các tùy chọn, do đó bạn có thể có một webview cho giao diện chính và vẫn sử dụng các hộp thoại gốc.
Có một dự án của bên thứ ba tên là QPython . Nó xây dựng trên SL4A và ném vào một số thứ hữu ích khác.
QPython cung cấp cho bạn giao diện người dùng đẹp hơn để quản lý cài đặt của bạn và bao gồm một trình chỉnh sửa mã màn hình cảm ứng nhỏ, trình bao Python và trình bao PIP để quản lý gói. Họ cũng có một cổng Python 3. Cả hai phiên bản đều có sẵn từ Cửa hàng Play, miễn phí. QPython cũng gói các thư viện từ một loạt Python trên các dự án Android, bao gồm Kivy, vì vậy nó không chỉ là SL4A.
Lưu ý rằng QPython vẫn phát triển ngã ba SL4A của họ (mặc dù, không trung thực lắm). Bản thân dự án SL4A đã chết khá nhiều.
Là một người yêu thích Python và lập trình viên Android, tôi rất buồn khi nói rằng đây không phải là một cách hay. Có hai vấn đề:
Một vấn đề là có rất nhiều ngôn ngữ lập trình cho các công cụ phát triển Android. Rất nhiều đồ họa Android liên quan đến các tệp XML để định cấu hình hiển thị, tương tự như HTML. Các đối tượng java tích hợp được tích hợp với bố cục XML này và việc viết mã của bạn đi từ logic sang bitmap dễ dàng hơn nhiều.
Vấn đề khác là G1 (và có lẽ các thiết bị Android khác trong tương lai gần) không nhanh như vậy. Bộ xử lý 200 MHz và RAM rất hạn chế. Ngay cả trong Java, bạn phải thực hiện một số lượng đáng kể việc viết lại để tránh nhiều đối tượng hơn nếu bạn muốn làm cho ứng dụng của mình hoàn toàn trơn tru. Python sẽ quá chậm trong một thời gian vẫn còn trên thiết bị di động.
Tôi muốn thêm vào những gì @JohnMudd đã viết về Kivy. Đã nhiều năm kể từ khi tình huống mà anh mô tả, và Kivy đã phát triển đáng kể.
Điểm bán hàng lớn nhất của Kivy, theo tôi, là khả năng tương thích đa nền tảng của nó. Bạn có thể mã hóa và kiểm tra mọi thứ bằng bất kỳ môi trường máy tính để bàn nào (Windows / * nix, v.v.), sau đó đóng gói ứng dụng của bạn cho một loạt các nền tảng khác nhau, bao gồm Android, iOS, MacOS và Windows (mặc dù các ứng dụng thường thiếu giao diện gốc).
Với ngôn ngữ KV riêng của Kivy , bạn có thể mã hóa và xây dựng giao diện GUI một cách dễ dàng (giống như Java XML, nhưng thay vì TextView, v.v., KV có ui.widgets
cách dịch tương tự), theo ý kiến của tôi khá dễ chấp nhận.
Hiện tại Buildozer và python-for-android là những công cụ được khuyên dùng nhất để xây dựng và đóng gói các ứng dụng của bạn. Tôi đã thử cả hai và có thể nói chắc chắn rằng họ làm cho việc xây dựng các ứng dụng Android với Python trở nên dễ dàng. Hướng dẫn của họ cũng được ghi chép lại.
iOS là một điểm bán hàng lớn khác của Kivy. Bạn có thể sử dụng cùng một cơ sở mã với một vài thay đổi cần thiết thông qua các công cụ Homebrew của kivy-ios , mặc dù Xcode là bắt buộc cho bản dựng, trước khi chạy trên thiết bị của họ (AFAIK Trình mô phỏng iOS trong Xcode hiện không hoạt động cho bản dựng kiến trúc x86) . Ngoài ra còn có một số vấn đề phụ thuộc phải được biên dịch thủ công và xử lý xung quanh trong Xcode để có bản dựng thành công, nhưng chúng sẽ không quá khó để giải quyết và mọi người trong Kivy Google Group cũng thực sự hữu ích.
Với tất cả những gì đã nói, người dùng có kiến thức Python tốt sẽ không gặp vấn đề gì trong việc tiếp thu những điều cơ bản một cách nhanh chóng.
Nếu bạn đang sử dụng Kivy cho các dự án nghiêm trọng hơn, bạn có thể thấy các mô-đun hiện tại không đạt yêu cầu. Có một số giải pháp khả thi mặc dù. Với các pyjas (đang tiến hành) cho Android và pyobjus , giờ đây người dùng có thể truy cập các lớp Java / Objective-C để kiểm soát một số API gốc.
ScreenManager
vì điều này sẽ giúp bạn tiết kiệm hàng tấn thời gian. Ngoài ra một lời khuyên là hãy đọc danh sách gửi thư của họ, một nhóm người hiểu biết ở đó sẵn sàng giúp đỡ bạn.
Bạn có thể sử dụng ứng dụng Termux , cung cấp môi trường POSIX cho Android, để cài đặt Python.
Lưu ý rằng apt install python
sẽ cài đặt Python3 trên Termux. Đối với Python2, bạn cần sử dụng apt install python2
.
Không phải lúc này và bạn sẽ may mắn có được Jython để làm việc sớm. Nếu bạn đang có kế hoạch bắt đầu phát triển ngay bây giờ, bạn sẽ tốt hơn nếu chỉ gắn bó với Java ngay bây giờ.
Sử dụng SL4A (đã được đề cập đến trong các câu trả lời khác), bạn có thể chạy một phiên bản web2py đầy đủ (các khung web python khác cũng có khả năng là ứng cử viên). SL4A không cho phép bạn thực hiện các thành phần UI gốc (nút, thanh cuộn và tương tự), nhưng nó hỗ trợ WebViews . Một WebView về cơ bản không có gì khác hơn là một trình duyệt web bị sọc chỉ vào một địa chỉ cố định. Tôi tin rằng ứng dụng Gmail gốc sử dụng WebView thay vì đi theo lộ trình widget thông thường.
Tuyến đường này sẽ có một số tính năng thú vị:
Tôi sử dụng ứng dụng QPython . Nó miễn phí và bao gồm trình chỉnh sửa mã, trình thông dịch tương tác và trình quản lý gói, cho phép bạn tạo và thực hiện các chương trình Python trực tiếp trên thiết bị của mình.
Từ trang Python cho android :
Python cho android là một dự án để tạo bản phân phối Python của riêng bạn bao gồm các mô-đun bạn muốn và tạo apk bao gồm python, libs và ứng dụng của bạn.
Chaquopy là một plugin cho hệ thống xây dựng dựa trên Gradle của Android Studio. Nó tập trung vào sự tích hợp chặt chẽ với các công cụ phát triển Android tiêu chuẩn.
Nó cung cấp các API hoàn chỉnh để gọi Java từ Python hoặc Python từ Java , cho phép nhà phát triển sử dụng ngôn ngữ nào là tốt nhất cho từng thành phần trong ứng dụng của họ.
Nó có thể tự động tải xuống các gói PyPI và xây dựng chúng thành một ứng dụng, bao gồm các gói gốc được chọn như NumPy.
Nó cho phép truy cập đầy đủ vào tất cả các API Android từ Python, bao gồm cả bộ công cụ giao diện người dùng gốc ( ví dụ: hoạt động thuần Python ).
Đây là một sản phẩm thương mại, nhưng nó miễn phí cho sử dụng nguồn mở và sẽ luôn duy trì như vậy.
(Tôi là người tạo ra sản phẩm này.)
Một nỗ lực khác: https://code.google.com.vn/p/android-python27/
Cái này nhúng trực tiếp trình thông dịch Python vào apk ứng dụng của bạn.
Dưới đây là một số công cụ được liệt kê trong trang web python chính thức
Có một ứng dụng có tên QPython3 trong playstore có thể được sử dụng cho cả chỉnh sửa và chạy tập lệnh python.
Một ứng dụng khác có tên Termux, trong đó bạn có thể cài đặt python bằng lệnh
pkg install python
Nếu bạn muốn phát triển ứng dụng, có Python Script Script 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.
Bạn cũng có thể kiểm tra PySide cho Android , đây thực sự là các ràng buộc Python cho Qt 4.
Có một nền tảng được gọi là PyMob nơi các ứng dụng có thể được viết hoàn toàn bằng Python và luồng công cụ trình biên dịch (PyMob) chuyển đổi chúng trong mã nguồn gốc cho các nền tảng khác nhau.
Đồng thời kiểm tra python-for-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.
Dùng thử Chaquopy SDK Python cho Android
Và ... 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.
Bạn có thể sử dụng QPython :
Nó có Bảng điều khiển Python, Trình chỉnh sửa, cũng như Trình quản lý / Trình cài đặt Gói
Đây là một dự án nguồn mở với cả hai triển khai Python 2 và Python 3. Bạn có thể tải xuống nguồn và các tệp .apk Android trực tiếp từ github.
QPython 2: https://github.com/qpython-android/qpython/release
QPython 3: https://github.com/qpython-android/qpython3/release
Một tùy chọn khác nếu bạn đang tìm kiếm 3.4.2 hoặc 3.5.1 là kho lưu trữ này trên GitHub.
Python3-Android 3.4.2 hoặc Python3-Android 3.5.1
Hiện tại nó hỗ trợ Python 3.4.2 hoặc 3.5.1 và phiên bản 10d của NDK. Nó cũng có thể hỗ trợ 3,3 và 9c, 11c và 12
Thật tuyệt khi bạn chỉ cần tải xuống, chạy make và bạn nhận được .so hoặc .a
Tôi hiện đang sử dụng điều này để chạy Python thô trên thiết bị Android. Với một vài sửa đổi cho các tệp xây dựng, bạn cũng có thể tạo x86 và armeabi 64 bit
Không thấy điều này được đăng ở đây, nhưng bạn có thể làm điều đó với Pyside và Qt bây giờ Qt hoạt động trên Android nhờ vào NESEitas.
Nó có vẻ giống như một loại bùn tại thời điểm này nhưng cuối cùng có thể là một tuyến đường khả thi ...
Một tùy chọn nữa dường như là pyqtdeploy trong đó trích dẫn các tài liệu là:
một công cụ kết hợp với các công cụ khác được cung cấp với Qt, cho phép triển khai các ứng dụng PyQt4 và PyQt5 được viết bằng Python v2.7 hoặc Python v3.3 trở lên. Nó hỗ trợ triển khai cho các nền tảng máy tính để bàn (Linux, Windows và OS X) và cho các nền tảng di động (iOS và Android).
Theo triển khai ứng dụng PyQt5 cho Android thông qua pyqtdeploy và Qt5, nó được phát triển tích cực, mặc dù rất khó tìm thấy các ví dụ về các ứng dụng Android đang hoạt động hoặc hướng dẫn về cách biên dịch chéo tất cả các thư viện cần thiết cho Android. Đó là một dự án thú vị để ghi nhớ mặc dù!
Hãy xem BeeWare . Tại thời điểm trả lời câu hỏi này, nó vẫn đang được phát triển sớm. Mục đích của nó là có thể tạo các ứng dụng gốc với Python cho tất cả các hệ điều hành được hỗ trợ, bao gồm cả Android.
Kiểm tra enaml -igen lấy khái niệm Reac -igen và áp dụng nó cho python.
Nó cho phép người dùng xây dựng các ứng dụng với các widget Android gốc và cung cấp API để sử dụng các thư viện android và java từ python.
Nó cũng tích hợp với android-studio và chia sẻ một vài tính năng dev tuyệt vời của phản ứng như tải lại mã và gỡ lỗi từ xa.