有没有办法在Android上运行Python?

我们正在开发S60版本,这个平台有一个很好的Python API ..

但是,在Android上没有关于Python的正式官方,但是由于Jython存在,有没有办法让蛇和机器人一起工作?

25个解决方案

870 votes

一种方法是使用Kivy:

开源Python库,用于快速开发应用程序   利用创新的用户界面,如多点触控应用程序。

Kivy可以在Linux,Windows,OS X,Android和iOS上运行。 您可以在所有支持的平台上运行相同的[python]代码。

Kivy Showcase应用程序

JohnMudd answered 2019-03-24T17:09:03Z

318 votes

还有新的Android脚本环境(ASE / SL4A)项目。 它看起来很棒,并且与原生Android组件有一些集成。

注意:不再在“积极开发”下,但有些叉子可能会。

Heat Miser answered 2019-03-24T17:09:44Z

191 votes

是!

Matt Cutts通过SL4A的一个例子 - “这是用六行Python代码编写的条形码扫描器:

import android

droid = android.Android()

code = droid.scanBarcode()

isbn = int(code['result']['SCAN_RESULT'])

url = "http://books.google?q=%d" % isbn

droid.startActivity('android.intent.action.VIEW', url)

unmounted answered 2019-03-24T17:10:20Z

80 votes

还有谷歌员工写的SL4A。

Rab Ross answered 2019-03-24T17:10:45Z

79 votes

“Android的Pygame子集是Android平台的Pygame功能子集的一个端口。该项目的目标是允许创建特定于Android的游戏,并简化从类似PC的平台到Android的游戏移植“。

这些例子包括一个包装在APK中的完整游戏,非常有趣。

muriloq answered 2019-03-24T17:11:19Z

69 votes

我已经发布了针对Android交叉编译Python 2.7.2的说明和补丁,你可以在我的博客上找到它:[http://mdqinc/blog/2011/09/cross-compiling-python-for-安卓/]

编辑:我是开源的Ignifuga,我的2D游戏引擎,它基于Python / SDL,它可以交叉编译Android。 即使你没有将它用于游戏,你也可以从代码和构建器实用程序中获得有用的想法(在Tim之后命名为Schafer ......你知道是谁)。

gabomdq answered 2019-03-24T17:11:55Z

68 votes

适用于Android的脚本层

SL4A做你想要的。 您可以从他们的站点直接将其直接安装到您的设备上,而不需要root。

它支持多种语言。 Python是最成熟的。 默认情况下,它使用Python 2.6,但您可以使用3.2端口。 我已经在Galaxy S2上使用了那个端口来处理各种各样的事情并且工作正常。

API

SL4A为每种支持的语言提供了android库的端口。 该库通过单个Android对象提供底层Android API的接口。

from android import Android

droid = Android()

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

每种语言都有相同的API。 您甚至可以在Web视图中使用JavaScript API。

let droid = new Android();

droid.ttsSpeak("hello from js");

用户界面

对于用户界面,您有三个选项:

您可以轻松地使用通用的本机对话框和菜单API。 这适用于确认对话和其他基本用户输入。

您还可以从Python脚本中打开Webview,然后使用HTML5用于用户界面。 当您使用Python的Web视图时,您可以通过在webview和Python进程之间来回传递消息催生了它。 用户界面不是原生的,但它仍然是一个很好的选择有。

对原生Android用户界面有一些支持,但我不是确定它的工作原理; 我只是没用过它。

您可以混合选项,这样您就可以拥有主界面的webview,并仍然使用本机对话。

QPython

有一个名为QPython的第三方项目。 它建立在SL4A之上,并引入了一些其他有用的东西。

QPython为您提供了更好的UI来管理您的安装,并包含一个小的触摸屏代码编辑器,一个Python shell和一个用于包管理的PIP shell。 他们还有一个Python 3端口。 这两个版本都可以从Play商店免费获得。 QPython还捆绑了Android项目中的一堆Python库,包括Kivy,所以它不仅仅是SL4A。

请注意,QPython仍在开发他们的SL4A分支(不过,说实话并不多)。 主要的SL4A项目本身已经死了。

有用的链接

SL4A项目(现在在GitHub上):[https://github/damonkohler/sl4a]

SL4A Python 3端口:[https://code.google/p/python-for-android/wiki/Python3]

QPython项目:[http://qpython]

Carl Smith answered 2019-03-24T17:14:53Z

62 votes

作为Python爱好者和Android程序员,我很遗憾地说这不是一个好方法。 有两个问题。

一个问题是Android开发工具不仅仅是一种编程语言。 很多Android图形都涉及配置显示的XML文件,类似于HTML。 内置的java对象实际上与这个XML布局集成在一起,并且比编写自己的代码从逻辑到位图要容易得多。

另一个问题是G1(以及可能在不久的将来可能还有其他Android设备)真的不那么快。 200 MHz处理器和RAM非常有限。 即使在Java中,如果你想让你的应用程序非常流畅,你也必须做大量的重写 - 避免更多的对象创建。 Python仍然会在移动设备上停留太长时间。

lacker answered 2019-03-24T17:15:34Z

35 votes

不是现在,你很幸运能让Jython尽快上班。 如果您现在计划开始开发,那么现在只需坚持使用Java就可以了。

Ilya Kochetov answered 2019-03-24T17:16:01Z

34 votes

使用SL4A(已经在其他答案中已经提到过),你可以运行一个成熟的web2py实例(其他python web框架也可能是候选者)。 SL4A不允许您使用本机UI组件(按钮,滚动条等),但它确实支持WebView。 WebView基本上只是指向固定地址的条带化Web浏览器。 我相信原生Gmail应用使用WebView而不是常规小部件路径。

这条路线有一些有趣的特点:

在大多数python web框架的情况下,你可以实际开发和测试,而无需使用Android设备或Android模拟器。

无论您最终为手机编写什么Python代码,也可以将其放在公共网络服务器上,只需很少(如果有)修改。

你可以利用所有疯狂的网页内容:查询,HTML5,CSS3等。

gdw2 answered 2019-03-24T17:16:56Z

34 votes

Kivy

我想发布这个作为@JohnMudd已经回答的内容的延伸(但请跟我一起,因为英语不是我的第一语言)

从那时起已经有好几年了,Kivy已经发展到v1.9-dev。 在我看来,Kivy的最大卖点是它的跨平台兼容性。 您可以在本地环境(Windows / * nix等)下进行编码和测试,也可以构建,调试和打包您的应用程序,以便在Android / iOS / Mac / Windows设备上运行。

使用Kivy自己的KV语言,您可以轻松编写和构建GUI界面(它就像Java XML,而不是TextView等,KV有类似的翻译有自己的ui.widgets),在我看来很容易采用。

目前,Buildozer和python-for-android是构建/打包应用程序的最佳推荐工具。 我已经尝试过它们并且可以坚定地说它们使用Python构建Android应用程序变得轻而易举。 在控制台/终端/命令提示符下感到舒服的用户在使用它们时应该没有问题,并且他们的指南也有很好的记录。

此外,iOS是Kivy的另一大卖点,前提是您可以使用相同的代码库,只需通过kivy-ios Homebrew工具在iOS设备上进行测试运行所需的更改,尽管在运行之前需要Xcode进行构建 他们的设备(XFA中的iOS模拟器AFAIK目前不适用于x86架构)。 还有一些依赖性问题必须在Xcode中手动编译和摆弄才能成功构建,但它们不会太难解决,Kivy Google Group中的人员也非常有帮助。

总而言之,拥有良好Python知识的用户在几周(如果不是几天)构建一些简单的应用程序时应该没有问题。

另外值得一提的是,您可以使用构建捆绑(构建配方)您的Python模块,这样用户就可以真正利用Python带给我们的许多现有库,例如Requests& PIL等通过Kivy的扩展支持。

有时您的应用程序需要的功能超出了   Kivy可以提供的范围。 在那些情况下,有必要   求助于外部软件库。 鉴于丰富的   Python生态系统,已经有很多软件   您可以直接导入和使用的库。

最后但并非最不重要的是,如果您打算将Kivy用于更严肃/商业项目,您可能会发现现有模块并不令人满意。 虽然有一些可行的解决方案,pyjnius for Android的“正在进行中”和pyobjus。 用户现在可以通过这些模块访问Java / Objective-C类来控制一些本机API。

我在Kivy的经验是,它会发现它最适合经验丰富的Python程序员和一些想要快速开发或简单代码库维护的认真程序员。 它在多个平台上运行良好,虽然不是真正的本土感觉。

我希望一些Python应用程序程序员发现这些信息很有用,并开始看看Kivy。 如果社区有很大的兴趣,它只能变得更好(有更多的支持和库/模块被移植)。

附: 我与Kivy没有任何关系,我只是一个非常喜欢将Python编码带入移动/跨平台开发的想法的程序员。

Anzel answered 2019-03-24T17:19:11Z

23 votes

我使用QPython应用程序。 它有一个编辑器,一个控制台,你可以用它运行你的Python程序。 该应用程序是免费的,链接是[http://qpython/。]

kyle k answered 2019-03-24T17:19:39Z

21 votes

从Python for android站点:

Python for android是一个创建自己的Python发行版的项目,包括你想要的模块,并创建一个包含python,libs和你的应用程序的apk。

gdw2 answered 2019-03-24T17:20:14Z

19 votes

您可以使用Termux应用程序:

注意,apt安装python install python 3。对于python 2,你应该调用apt install python2。

这里有一些演示:[https://www.youtube/watch?v=fqqsl72mASE]

还有github页面:[https://github/termux]

Adrian Stanculescu answered 2019-03-24T17:21:02Z

17 votes

又一次尝试:[https://code.google/p/android-python27/]

这个直接嵌入你的应用程序apk中的Python解释器。

e-satis answered 2019-03-24T17:21:34Z

12 votes

您可以使用sl4a运行Python代码。 sl4a支持Python,Perl,JRuby,Lua,BeanShell,JavaScript,Tcl和shell脚本。

您可以学习sl4a Python示例。

Hitul answered 2019-03-24T17:22:06Z

12 votes

还有可能正在运行mosync的python-on-a-chip:google group

fooba answered 2019-03-24T17:22:31Z

11 votes

Chaquopy

Chaquopy是Android Studio基于Gradle的构建系统的插件。 它侧重于与标准Android开发工具的紧密集成。

它提供了完整的API,可以从Python调用Java或从Java调用Python,允许开发人员使用最适合其应用程序的每个组件的语言。

它可以自动下载PyPI包并将它们构建到应用程序中,包括选定的本机包,如NumPy。

它支持从Python完全访问所有Android API,包括本机用户界面工具包(示例纯Python活动)。

这是一个商业产品,但它可以免费用于开源使用,并且将始终保持这种状态。

(我是这个产品的创造者。)

mhsmith answered 2019-03-24T17:23:54Z

10 votes

你可以使用QPython:

它有一个Python控制台,编辑器,以及包管理/安装程序

[http://qpython/]

这是一个包含Python 2和Python 3实现的开源项目。 您可以直接从github下载源代码和Android .apk文件。

QPython 2:[https://github/qpython-android/qpython/releases]

QPython 3:[https://github/qpython-android/qpython3/releases]

ode2k answered 2019-03-24T17:25:00Z

9 votes

playstore中有一个名为QPython3的应用程序,可用于编辑和运行python脚本。

Play商店链接

另一个名为Termux的应用程序,您可以在其中使用命令安装python

pkg install python

播放商店链接

pz64 answered 2019-03-24T17:25:47Z

8 votes

没有看到这个发布在这里,但你可以用Pyside和Qt做到现在Qt可以在Android上运行,感谢Necessitas。

目前看起来像是一个很好的克服,但最终可能是一条可行的路线......

[http://qt-project/wiki/PySide_for_Android_guide]

radix07 answered 2019-03-24T17:26:26Z

8 votes

如果您正在寻找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

我目前使用它在Android设备上运行原始Python。 通过对构建文件的一些修改,您还可以使x86和armeabi 64位

GR Envoy answered 2019-03-24T17:27:33Z

6 votes

另一个选项似乎是pyqtdeploy,引用文档是:

与Qt一起提供的其他工具一起使用的工具   使用Python编写的PyQt4和PyQt5应用程序的部署   v2.7或Python v3.3或更高版本。 它支持部署到桌面   平台(Linux,Windows和OS X)和移动平台(iOS和Linux)  Android的)。

根据通过pyqtdeploy和Qt5将PyQt5应用程序部署到Android,它是积极开发的,虽然很难找到工作Android应用程序的示例或如何将所有必需的库交叉编译到Android的教程。 尽管如此,这是一个有趣的项目!

Andrzej Pronobis answered 2019-03-24T17:28:27Z

3 votes

看看BeeWare吧。 在回答这个问题时,它仍处于早期发展阶段。 它的目标是能够为所有支持的操作系统(包括Android)使用Python创建本机应用程序。

DrawT answered 2019-03-24T17:28:55Z

3 votes

查看enaml-native,它接受react-native概念并将其应用于python。

它允许用户使用原生Android小部件构建应用程序,并提供API以使用python中的android和java库。

它还与android-studio集成,并分享一些反应良好的开发功能,如代码重新加载和远程调试。

frmdstryr answered 2019-03-24T17:29:36Z

更多推荐

python程序在安卓上如何运行-有没有办法在Android上运行Python?