2088

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

不过,Android 上的 Python 官方并没有什么说法,但是既然Jython存在,有没有办法让蛇和机器人协同工作呢??

4

23 回答 23

1153

一种方法是使用Kivy

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

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

Kivy 展示应用程序

于 2011-11-18T21:49:45.343 回答
363

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

注意:不再处于“积极开发”之下,但一些分叉可能是。

于 2009-06-10T05:24:29.237 回答
229

是的!: 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)
于 2009-06-10T05:13:13.870 回答
95

适用于 Android 的 Pygame 子集

Pygame是 Python 的 2D 游戏引擎(在桌面上),很受新程序员欢迎。Android的Pygame 子集将自己描述为...

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

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

于 2011-01-28T12:18:47.870 回答
91

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

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

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

于 2008-11-01T20:29:44.703 回答
84

交叉编译 & Ignifuga

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

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

于 2011-10-12T13:49:09.380 回答
83

Android 脚本层

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

它支持多种语言。Python是最成熟的。默认情况下,它使用 Python 2.6,但您可以使用3.2 端口。我已经将该端口用于 Galaxy S2 上的各种事情,并且运行良好。

API

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

from android import Android

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

每种语言都有几乎相同的 API。你甚至可以在 webviews 中使用 JavaScript API。

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

用户界面

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

  • 您可以通过 API 轻松使用通用的原生对话和菜单。这对于确认对话和其他基本用户输入很有用。
  • 您还可以从 Python 脚本中打开 web 视图,然后使用 HTML5 作为用户界面。当您使用 Python 中的 webviews 时,您可以在 webview 和生成它的 Python 进程之间来回传递消息。UI 不会是原生的,但它仍然是一个不错的选择。
  • 对原生 Android 用户界面有一些支持,但我不确定它的效果如何;我只是从来没有使用过它。

您可以混合选项,这样您就可以拥有一个主界面的 web 视图,并且仍然使用本机对话。

QPython

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

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

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

有用的链接

于 2012-03-19T15:45:27.680 回答
60

Termux

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

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

于 2017-01-20T11:36:47.937 回答
55

基维

我想补充一下@JohnMudd 写的关于 Kivy 的内容。自从他描述的情况以来已经有好几年了,基维已经有了很大的发展。

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

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

目前Buildozerpython-for-android是最推荐的构建和打包应用程序的工具。我已经尝试了它们,并且可以坚定地说它们使使用 Python 构建 Android 应用程序变得轻而易举。他们的指南也有据可查。

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

话虽如此,具有良好 Python 知识的用户应该可以快速掌握基础知识。

如果您将 Kivy 用于更严肃的项目,您可能会发现现有模块不能令人满意。虽然有一些可行的解决方案。借助(正在进行的) Android pyjniuspyobjus,用户现在可以访问 Java/Objective-C 类来控制一些本机 API。

于 2015-01-13T02:08:57.633 回答
42

目前还没有,如果您能尽快让 Jython 工作,您会很幸运。如果您打算现在开始您的开发,那么现在最好还是坚持使用 Java。

于 2008-09-19T13:26:53.043 回答
42

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

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

  • 对于大多数 python web 框架,您实际上可以在不使用 android 设备或 android 模拟器的情况下进行开发和测试。
  • 无论您最终为手机编写的任何 Python 代码都可以放在公共网络服务器上,只需很少(如果有的话)修改。
  • 你可以利用所有疯狂的网络资源:查询、HTML5、CSS3 等。
于 2012-01-06T14:34:25.123 回答
39

QPython

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

于 2013-06-12T19:46:35.943 回答
31

以下是python官方网站中列出的一些工具


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

商店链接


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

pkg install python

游戏商店链接


如果你想开发应用程序,有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) 将它们转换为各种平台的本机源代码。


还要检查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

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.

于 2017-04-15T14:09:33.330 回答
30

来自Python for android网站:

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

于 2012-01-09T04:46:53.783 回答
25

查库皮

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

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

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

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

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

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

于 2018-02-16T17:12:15.033 回答
22

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

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

于 2012-05-09T15:44:49.157 回答
18

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

您可以学习 sl4a Python 示例

于 2013-03-11T09:36:58.517 回答
14

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

Python3-Android 3.4.2Python3-Android 3.9.6

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

旧版本您只需克隆存档,运行 make 并获得 .so 或 .a

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

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

于 2015-02-25T13:04:47.927 回答
14

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

于 2016-09-16T02:41:18.097 回答
12

没有看到这里发布的内容,但是由于 Necessitas,Qt 可以在 Android 上运行,因此您可以使用 Pyside 和 Qt 来做到这一点。

目前这似乎是一个相当大的组合,但最终可能是一条可行的路线......

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

于 2014-10-06T14:59:14.867 回答
12

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

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

官网:蜂器

Github 仓库:https ://github.com/beeware

于 2018-01-12T18:56:16.643 回答
9

另一种选择似乎是pyqtdeploy引用文档是:

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

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

于 2015-05-18T01:56:41.157 回答
5

查看采用 react-native 概念并将其应用于 python 的enaml-native 。

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

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

于 2018-01-16T16:01:11.380 回答