android - qpython studio




有沒有辦法在Android上運行Python? (17)

我們正在開發一個S60版本,這個平台有一個很好的Python API。

然而,Android上並沒有官方的關於Python的內容,但是由於Jython存在,是否有辦法讓蛇和機器人一起工作?

https://code.i-harness.com


Kivy

我想將此作為@JohnMudd已經回答的延伸發布( 但請耐心聽我說,英語不是我的第一語言

從那以後數年,Kivy已經發展到v1.9-dev。 在我看來,Kivy的最大賣點是它的跨平台兼容性。 您可以在本地環境(Windows / * nix等)下進行編碼和測試,還可以構建,調試和打包應用以在Android / iOS / Mac / Windows設備上運行。

使用Kivy自己的KV語言,您可以輕鬆編寫和構建GUI界面(就像Java XML一樣,而不是TextView等,KV對於類似的翻譯有它自己的ui.widgets ),在我看來這很容易採用。

目前Buildozerpython-for-android是構建/打包應用程序最推薦的工具。 我已經嘗試過他們,可以堅定地說,他們使用Python構建Android應用程序變得輕而易舉。 在控制台/終端/命令提示符下感覺舒適的用戶使用它們應該沒有問題,並且他們的指南也有很好的文檔記錄。

此外,iOS是Kivy的另一個重要賣點,前提是您可以使用相同的代碼庫,只需在iOS設備上通過kivy-ios Homebrew工具進行測試運行所需的小改動即可,但運行前需要Xcode他們的設備(AFAIK Xcode中的iOS模擬器目前不適用於x86架構版本)。 還有一些依賴問題必須在Xcode中手動編譯和擺弄才能成功構建,但它們不會太難以解決,而且Kivy Google Group中的人員也真的很有幫助。

所有人都說,擁有良好Python知識的用戶應該在幾週(如果不是幾天)中獲取基礎知識以構建一些簡單的應用程序,應該沒有問題。

另外值得一提的是,您可以將Python模塊與構建綁定(構建配方),以便用戶可以真正利用Python帶給我們的許多現有庫,例如通過Kivy的擴展支持 RequestsPIL等。

有時候,您的應用程序需要的功能超出了Kivy所能提供的範圍。 在這些情況下,有必要訴諸外部軟件庫。 鑑於Python生態系統的豐富性,已經有很多軟件庫可以直接導入和使用。

最後但並非最不重要的,如果您打算將Kivy用於更嚴肅的商業項目,您可能會發現現有的模塊不能令人滿意。 儘管如此,仍有一些可行的解決方案,用於Android的pyjniuspyobjus的“正在進行中”。 用戶現在可以通過這些模塊訪問Java / Objective-C類來控制一些本地API。

我在Kivy的經驗是,它會找到最適合經驗豐富的Python程序員和一些想要快速開發或簡單代碼庫維護的嚴肅程序員。 它在多個平台上運行良好,儘管不是真正的本地感覺。

我希望一些Python應用程序員能夠發現這些有用的信息,並開始關注Kivy。 如果社區有很大的興趣,它只會變得更好(如果有更多的支持,以及圖書館/模塊的移植)。

PS我與基維沒有任何關係,我只是一個程序員,他非常喜歡將Python編碼帶入移動/跨平台開發的樂趣。


Chaquopy

Chaquopy是Android Studio的基於Gradle的構建系統的插件。 它側重於與標準Android開發工具的緊密集成

  • 它提供了完整的API來從PythonJava調用Java ,允許開發人員使用最適合其應用程序的每個組件的語言。

  • 它可以自動下載PyPI包並將它們構建到應用程序中,包括所選的本地包,如NumPy。

  • 它支持從Python完全訪問所有Android API,包括本地用戶界面工具包( 示例純Python活動 )。

這是一個商業產品,但它對開放源代碼的使用是免費的,並且始終保持這種狀態。

(我是這個產品的創造者。)


google-opensource.blogspot.com/2009/06/…

一個例子通過馬特卡茨通過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)

用於AndroidPygame子集是Android平台Pygame功能子集的一個端口,該項目的目標是允許創建特定於Android的遊戲,並簡化遊戲從PC類平台到Android的移植“。

這些例子包括一個包裝在APK中的完整遊戲,這非常有趣。


作為一名Python愛好者和Android程序員,我很難過地說這不是一個真正的好方法。 有兩個問題。

一個問題是,Android開發工具不僅僅是一種編程語言。 很多Android圖形涉及XML文件來配置顯示,類似於HTML。 內置的java對象實際上與這個XML佈局集成在一起,比編寫你自己的代碼從邏輯到位圖要容易得多。

另一個問題是,G1(以及可能在不久的將來其他Android設備)真的不是那麼快。 200 MHz處理器,而且RAM非常有限。 即使在Java中,如果要使應用程序完美平滑,還必須進行大量重寫以避免更多對象的創建。 Python仍然會在移動設備上運行一段時間太慢。


你可以使用sl4a來運行你的Python代碼。 sl4a支持Python, PerlJRubyLua ,BeanShell,JavaScript, Tcl和shell腳本。

您可以學習sl4a Python示例


使用SL4A(在其他答案中已經提到過)可以run一個完整的web2py實例(其他python web框架也可能是候選人)。 SL4A不允許您執行本地UI組件(按鈕,滾動條等),但它確實支持WebViews 。 WebView基本上只不過是一個指向固定地址的分離式Web瀏覽器。 我相信原生Gmail應用程序使用WebView而不是使用常規小部件路線。

這條路線會有一些有趣的功能:

  • 在大多數python web框架的情況下,你可以實際開發和測試,而不使用android設備或android模擬器。
  • 無論您最終為手機編寫的Python代碼是什麼,都可以通過很少(如果有)修改的方式將其放在公共網絡服務器上。
  • 您可以利用所有瘋狂的網頁內容:查詢,HTML5,CSS3等。


在Playstore中有一個名為QPython3的應用程序,可用於編輯和運行python腳本。

Playstore鏈接

另一個名為Termux的應用程序,您可以使用命令安裝python

pkg install python

Playstore鏈接


在這裡沒有看到這篇文章,但是現在你可以用Pyside和Qt來完成了,因為Qt在Android上運行得益於Necessitas。

這似乎是相當混亂,但最終可能是一條可行的路線......

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




我已經發布了針對Android的交叉編譯Python 2.7.2的說明和補丁,您可以在我的博客中獲取它: http://mdqinc.com/blog/2011/09/cross-compiling-python-for-android/ : http://mdqinc.com/blog/2011/09/cross-compiling-python-for-android/

編輯:我已經開源Ignifuga ,我的2D遊戲引擎,它是基於Python / SDL的,它為Android進行交叉編譯。 即使你不使用它來進行遊戲,你也可以從代碼和構建器工具中獲得有用的想法(在Tim之後,你知道是誰)。


有幾種方法可以在Android上使用Python。

BeeWare是用於構建本地用戶界面的工具集合

Chaquopy是Android Studio的基於Gradle的構建系統的插件。

Kivy是一個跨平台的基於OpenGL的用戶界面工具包。

pyqtdeploy是部署PyQt應用程序的工具。

QPython是一款設備上的腳本引擎和開發環境。

最初名為ASE(Android Scripting Environment)的SL4A (用於Android的腳本層)是一組“外觀”,它揭示了一個大大簡化的Android API子集。

PySide (Qt工具包的Python綁定)對Android有一些初步的支持。

儘管An​​droid的主要編程語言是Java,但平台上沒有已知的Jython端口。 BeeWare中的Android支持是使用VOC(一種將Python源代碼編譯為Java類文件的工具)實現的。 這允許Python代碼在JVM上作為本機二進製文件執行。 https://wiki.python.org/moin/Android


看看BeeWare 。 在回答這個問題時,它仍處於早期發展階段。 它的目標是能夠為所有支持的操作系統(包括Android)使用Python創建本機應用程序。


還有Google員工編寫的SL4A


還有新的Android腳本環境 (ASE / SL4A)項目。 它看起來很棒,它與原生Android組件有一些整合。

注意:不再在“積極發展”下,但有些分叉可能會。





android-scripting