当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《有没有办法在Android上运行Python?》经验,为你挑选了25个好方法。

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

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



1> JohnMudd..:

一种方法是使用Kivy:

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

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

Kivy Showcase应用程序


如果您使用Kivy,这里有一个工具可以帮助您将项目打包成APK:https://github.com/kivy/python-for-android
过去一周我一直在玩Kivy试图写游戏.他们的主要开发人员非常快速地回答有关IRC的问题,但是如果你在Kivy之前编程了一个GUI会让你说WTF相当多.一些对我来说很奇怪的未记录事情的例子:即使事件发生在他们的区域之外,所有窗口小部件都会获得每个on_touch_down事件,没有窗口小部件有draw()方法,几乎​​所有事件都是通过他们自己组建的自定义属性上的自定义观察者模式发生的(注意这些与Python的属性共享名称,但不一样)
现在,差不多整整一年后,支持会更好吗?这里有任何显着的改进吗?
现在也有iOS支持!
@Trey:非GUI相关的事情怎么样?有关Python模块使用的限制吗?如何访问特定于Android的功能,例如阅读消息,添加通知,在后台工作,制作照片,阅读联系人列表,确定GPS位置等功能?
回答@Tadeck的旧问题:Kivy可以通过[pyjnius](https://pyjnius.readthedocs.org/en/latest/)和(更多pythonic包装器)直接访问特定于Android的功能[plyer]( https://github.com/kivy/plyer).如果你编写(或者已经存在)python-for-android配方,你也可以使用任何纯python模块或带有编译组件的模块 - 我们已经有许多流行模块的配方,如numpy,sqlalchemy甚至django.

2> Heat Miser..:

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

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


没错,但他们必须安装ASE,这不是一个让你在没有安装任何东西的情况下在python中编写Android应用程序的解决方案(普通用户将全部"wtf是这个ASE的东西吗?)
此外,ASE是一个受限制的环境; 即使预先安装了ASE,也无法编写成熟的Android应用程序.请参见http://stackoverflow.com/questions/2076381
我认为它已更名为SL4A.
您可以编写应用程序,打包它们,甚至可以在Play商店出售它们,如果您愿意,现在可以使用SL4A.自上面的评论发布以来,情况一直很顺利.如果你想在Android上使用Python,那么在SL4A上运行的PY4A可能是最好的选择.
我确认,SL4A现在允许编写准备使用的应用程序包,我尝试使用perl使其工作

3> unmounted..:

是! :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)


S/YES/MEH.也许/ ......它非常有限.什么图形或多点触摸?一个大的NO.
golfed:`import android as a; d = a.Android(); d.startActivity('android.intent.action.VIEW',"http://books.google.com?q=%d"%int(d .scanBarcode()[ '结果'] [ 'SCAN_RESULT']))`
@ gdw2,原生Gmail应用程序肯定只使用WebView来解析电子邮件,而不是实际的用户界面.这使得比较有点荒谬.
@gcb,您不能使用普通的android小部件集,但是可以使用“ webviews”(例如,本地gmail应用程序使用的)。

4> Rab Ross..:

还有谷歌员工写的SL4A.



5> muriloq..:

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

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


我的Droid X上有几个方面被破坏了(按钮或触摸屏,不记得了),所以我对这条路线走得不远.

6> 小智..:

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

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


令人印象深刻.+1为此.不接受,因为你不可能为公众写任何东西.

7> Carl Smith..:
适用于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脚本中打开Web视图,然后使用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.com/damonkohler/sl4a

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

QPython项目:http://qpython.com



8> lacker..:

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

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

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


Android手机上没有一个java字,它在打包过程中被编译为字节码.速度不是问题:谷歌可以提供从python代码生成正确字节代码的工具(比如Jython).BTW,Dalvik不是Java VM,所以这不是Java VS Python.
@Touzen 2年后,我们现在正在运行Intel Atom处理器或八核处理器.;)
JAVA字节码仍然需要由JVM处理,而Java语言无论如何都需要垃圾收集器.实际速度只能来自C++.
由于它们能够吸取的功率不同,手机总是比台式机慢一个数量级.但是,不要放弃Python用于移动设备,因为通常只有一小部分代码负责处理器密集型工作,并且可以通过用另一种语言重写它来优化这一部分.

9> Anzel..:
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模块,这样用户就可以通过Kivy的扩展支持真正利用Python带来的许多现有库,如Requests和PIL等.

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

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

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

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

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



10> Ilya Kocheto..:

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



11> gdw2..:

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

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

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

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

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


Cherrypy运行良好,支持ws4py websocket.SL4A的瓶子也没问题.

12> Adrian Stanc..:

您可以使用Termux应用程序:

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

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

还有github页面:https://github.com/termux


Termux为+1.绝对美妙的工作环境.回购中的精选包装选择,方便的音量按钮快捷方式.这是我用过的手机上最接近Debian的东西.

13> kyle k..:

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


现在qpython添加了Django支持!这就是我需要的一切!惊人!

14> gdw2..:

从Python for android站点:

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



15> e-satis..:

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

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



16> mhsmith..:

Chaquopy

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

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

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

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

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

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



17> pz64_..:

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

Playstore链接

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

pkg install python

Playstore Link


使用Termux你可以安装python 2以及$ apt install python2

18> fooba..:

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



19> Hitul..:

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

您可以学习sl4a Python示例.



20> ode2k..:

你可以使用QPython:

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

http://qpython.com/

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

QPython 2:https://github.com/qpython-android/qpython/releases

QPython 3:https://github.com/qpython-android/qpython3/releases



21> radix07..:

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

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

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



22> GR Envoy..:

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



23> Andrzej Pron..:

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

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

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



24> 小智..:

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



25> frmdstryr..:

看看enaml-native,它采用了react-native概念并将其应用于python。

它允许用户使用本机Android小部件来构建应用,并提供API以使用来自python的android和java库。

它还与android-studio集成,并共享了react的一些不错的开发功能,例如代码重载和远程调试。

推荐阅读
殉情放开那只小兔子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有