安卓python - 有没有办法在Android上运行Python?




qpython3 (17)

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

然而,Android上并没有官方的关于Python的内容,但是由于Jython存在,是否有办法让蛇和机器人一起工作?


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的另一大卖点,前提是您可以使用相同的代码库,只需在基于kivy-ios Homebrew工具的iOS设备上进行测试运行所需的小改动即可,但运行前需要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(在其他答案中已经提到过)可以run一个完整的web2py实例(其他python web框架也可能是候选人)。 SL4A不允许您执行本地UI组件(按钮,滚动条等),但它确实支持WebViews 。 WebView基本上只不过是一个指向固定地址的分离式Web浏览器。 我相信原生Gmail应用程序使用WebView而不是使用常规小部件路线。

这条路线会有一些有趣的功能:

  • 在大多数python web框架的情况下,你可以实际开发和测试,而不使用android设备或android模拟器。
  • 无论您最终为手机编写的Python代码是什么,都可以通过很少(如果有)修改的方式将其放在公共网络服务器上。
  • 您可以利用所有疯狂的网页内容:查询,HTML5,CSS3等。

另外一个选项似乎是引用文档的pyqtdeploy

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

根据通过pyqtdeploy和Qt5PyQt5应用程序部署到Android ,尽管很难找到有效的Android应用程序示例或者如何将所有必需的库交叉编译为Android的教程,但它仍在积极开发之中。 但要记住这是一个有趣的项目!


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

Playstore链接

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

pkg install python

Playstore链接


如果你正在寻找3.4.2或3.5.1的另一个选择是GitHub上的这个档案。

Python3-Android 3.4.2Python3-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位



我已经发布了针对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有一些初步的支持。

尽管Android的主要编程语言是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