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

问题描述 投票:2097回答:25

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

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

android python jython ase android-scripting
25个回答
968
投票

一种方法是使用Kivy

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

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

Kivy Showcase app


37
投票

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


36
投票

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

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

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

26
投票

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


24
投票

你可以使用Termux应用程序:

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

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

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


23
投票

来自Python for android网站:

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


18
投票

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

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


15
投票

Chaquopy

Chaquopy是Android Studio基于Gradle的构建系统的插件。它使用标准的Android开发工具专注于close integration

  • 它提供了完整的API来调用Java from PythonPython from Java,允许开发人员使用最适合其应用程序的每个组件的语言。
  • 它可以自动下载PyPI packages并将它们构建到一个应用程序中,包括选定的本机程序包,如NumPy。
  • 它支持从Python完全访问所有Android API,包括本机用户界面工具包(example pure-Python activity)。

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

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


15
投票

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

Playstore link

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

pkg install python

Playstore Link

如果你想开发应用程序,有Python Android Scripting 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.

您还可以检查PySide for Android,它实际上是Qt 4的Python绑定。

有一个名为PyMob的平台,其中的应用程序可以纯粹用Python编写,编译器工具流程(PyMob)可以在各种平台的本机源代码中对它们进行转换。


14
投票

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

你可以学习sl4a Python Examples


14
投票

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


332
投票

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

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


12
投票

你可以使用QPython:

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

http://qpython.com/

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

第2步:级联

Kitshon:演员


10
投票

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

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

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


10
投票

如果您正在寻找3.4.2或3.5.1的另一个选项是GitHub上的这个存档。

https://github.com/qpython-android/qpython3/releaseshttp://qt-project.org/wiki/PySide_for_Android_guide

它目前支持Python 3.4.2或3.5.1以及NDK的10d版本。它还可以支持3.3和9c,11c和12

这很好,因为你只需下载它,运行make然后你得到.so或.a

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


8
投票

另一个选择似乎是引用文档的Python3-Android 3.4.2

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

根据Python3-Android 3.5.1,它是积极开发的,虽然很难找到有关如何将所有必需的库交叉编译到Android的Android应用程序或教程的示例。尽管如此,这是一个有趣的项目!


4
投票

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

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

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


3
投票

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


206
投票

是! :Android Scripting Environment

一个例子来自SL4A的via Matt Cutts - “这是用六行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)

84
投票

还有谷歌员工写的SL4A


83
投票

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

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


73
投票

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

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


72
投票

Scripting Layer for Android

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

它支持多种语言。 Python是最成熟的。默认情况下,它使用Python 2.6,但您可以使用3.2 port。我已经在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项目本身已经死了。

有用的链接


65
投票

作为Python爱好者和Android程序员,我痛心地说,这是不是真的走的好方法。有两个问题。

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

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


41
投票

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进行构建(Acode在Xcode中的iOS模拟器目前不适用于x86架构构建)。还有一些依赖性问题必须在Xcode中手动编译和摆弄才能成功构建,但它们不会太难解决,Kivy Google Group中的人也非常有帮助。

总而言之,具有良好Python知识的用户应该在几周(如果不是几天)内完成基础知识来构建一些简单的应用程序。

另外值得一提的是,您可以使用构建捆绑(构建配方)您的Python模块,以便用户可以真正利用Python带来的许多现有库,例如RequestsPIL等通过Kivy's extension support

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

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.