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

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

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

733741 次浏览

现在还没有,你会很幸运地让Jython很快开始工作。如果你打算现在开始你的开发,你最好从现在开始坚持Java。

作为python爱好者和Android程序员,我很难过地说这不是一条好路。有两个问题:

一个问题是Android开发工具不仅仅是一种编程语言。许多Android图形涉及XML文件来配置显示,类似于超文本标记语言。内置的java对象与这种XML布局集成,从逻辑到位图比编写代码要容易得多。

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

是的!:Android脚本环境

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

import androiddroid = android.Android()code = droid.scanBarcode()isbn = int(code['result']['SCAN_RESULT'])url = "http://books.google.com?q=%d" % isbndroid.startActivity('android.intent.action.VIEW', url)

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

注:不再在“主动开发”下,但某些分叉可能会。

适用于Android的Pygame子集

Pygame是Python(桌面)的2D游戏引擎,深受新程序员的欢迎。适用于Android的Pygame子集将自己描述为…

…将Pygame功能的一部分移植到Android平台。该项目的目标是允许创建特定于Android的游戏,并简化游戏从类似PC的平台移植到Android的过程。

示例包括打包为APK的完整游戏,这非常有趣。

交叉编译&Ignifuga

我的博客有说明和补丁用于交叉编译Python 2.7.2 for Android。

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

一种方法是使用Kivy

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

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

Kivy Showcase应用程序

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

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

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

Python for android站点:

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

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。您甚至可以在webview中使用JavaScript API。

let droid = new Android();droid.ttsSpeak("hello from js");

用户界面

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

  • 您可以通过API。这对于确认对话和其他基本用户输入很有用。
  • 您还可以从Python脚本中打开webview,然后使用HTML5用于用户交互界面。当您从Python使用webview时,您可以通过在webview和Python进程之间来回传递消息UI将不是原生的,但它仍然是一个不错的选择有。
  • 一些支持原生Android用户界面,但我不是我知道它有多好;我只是从来没有用过它。

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

qpython

有一个名为qpython的第三方项目。它构建在SL4A之上,并提供了一些其他有用的东西。

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

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

有用链接

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

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

sl4a支持Python、perlJRubylua、BeanShell、JavaScript、tcl和外壳脚本。

你可以学习sl4apython示例

qpython

我使用qpython app。它是免费的,包括一个代码编辑器、一个交互式解释器和一个包管理器,允许您直接在设备上创建和执行Python程序。

没有看到这张贴在这里,但你可以用Pyside和Qt做到这一点,现在Qt可以在Android上运行,这要归功于Necessitas。

目前看起来像是一个拼凑的过程,但最终可能是一条可行的路线…

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

Kivy

我想补充一下@JohnMudd写的关于Kivy的文章。距离他描述的情况已经有好几年了,Kivy已经发生了很大的变化。

在我看来,Kivy最大的卖点是它的跨平台兼容性。你可以使用任何桌面环境(Windows/*nix等)编写和测试所有内容,然后为一系列不同的平台打包你的应用程序,包括Android、iOS、MacOS和Windows(尽管应用程序通常缺乏原生的外观和感觉)。

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

目前,Buildozer安卓版python-for-android是构建和打包应用程序的最推荐工具。我已经尝试过它们,可以肯定地说它们让使用Python构建Android应用程序变得轻而易举。他们的指南也有很好的记录。

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

话虽如此,拥有良好Python知识的用户应该没有问题快速掌握基础知识。

如果您将Kivy用于更严肃的项目,您可能会发现现有模块不令人满意。不过,有一些可行的解决方案。使用Android的(半成品)pyjnius皮奥古斯,用户现在可以访问Java /Objective-C类来控制一些本机API。

如果您正在寻找3.4.2或更高版本(撰写本文时为3.9.6),另一个选择是GitHub上的此存档。

Python3-Android 3.4.2下载Python3-Android 3.9.6

我相信原始存档支持Python 3.4.2,最新的GRRedwing分支支持3.9.6和22b版本的NDK。较旧的分支支持其他版本,但不太容易用docker编译。

旧版本你只需克隆存档,运行make,你就会得到. so或. a

较新的版本遵循ReadMe,但它使用docker进行一致的构建。

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

还有一个选项似乎是pyqt部署,引用文档是:

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

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

您可以使用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

Termux

您可以使用为Android提供POSIX环境的Termux应用程序来安装Python。

请注意,apt install python将在Termux上安装Python3。对于Python2,您需要使用apt install python2

<强>这里是python官方网站中列出的一些工具


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

Playstore链接


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

pkg install python

Playstore Link


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


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


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


检查python-for-android

python-for-android is an open source build tool to let you package Python code into standalone android APKs. These can be passed around, installed, or uploaded to marketplaces such as the Play Store just like any other Android app. This tool was originally developed for the Kivy cross-platform graphical framework, but now supports multiple bootstraps and can be easily extended to package other types of Python apps for Android.


尝试Chaquopy适用于Android的Python SDK


还有…我们是

BeeWare allows you to write your app in Python and release it on multiple platforms. No need to rewrite the app in multiple programming languages. It means no issues with build tools, environments, compatibility, etc.

看看BeeWare。它有了显着的增长。它获得了PSF(Python软件基金会)教育补助金。

Beeware的目标是能够为所有支持的操作系统(包括Android)使用Python创建本机应用程序。

官方网站:Beeware

Github回购:https://github.com/beeware

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

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

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

Chaquopy

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

这是一个商业产品,但它是免费的开源使用,并将永远保持这种方式。

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