29

我是 android 开发的新手,我对 Java、C#、Python 等有一些经验。Python 是我最喜欢的,我想用它编写 Android 应用程序。
然后我看到了这个问题:
有没有办法在Android上运行Python?
提到的投票最多的答案KivyASE(现在是SL4A并且包括PY4A)。
但是,经过一番谷歌搜索后,我找不到任何有关 和 之间区别的有用Kivy信息PY4A。寻找和之间的区别Kivy也是SL4A徒劳的。

那么,对于KivyPY4A
有人可以简单地解释一下:
- 它们之间有什么相似之处和不同之处?
- 它们的优点和缺点是什么?
- 还有其他好的选择吗?

4

4 回答 4

25

令人困惑的是,有两个名为“python for android”的项目。

SL4A 可让您在 android 上运行 python 脚本。他们的 PY4A 是他们工具链中的一个步骤,但我对此知之甚少。我知道有一些与 android api 的集成(您可以使用一些硬件等),但在如何运行程序方面存在限制(它们不是完整的应用程序,没有 gui 等)。这是我从其他帖子中推断出来的,我没有尝试过,不要相信我的细节。(编辑:实际上似乎有一些打包apks的能力和多种创建gui的方法,我不知道细节)

Kivy 是一个图形框架,支持许多操作系统(linux、windows、osx、android、ios,也许已经更多)。你用它来构建 python guis。kivy 项目还启动了他们自己的 python-for-android 项目,该项目提供了为 android 编译 python 解释器并将其打包为实际 android 应用程序的方法(包括与 pyjnius 的 java api 集成等)。Kivy 与它很好地集成,因此您可以轻松地为 android 编译 python gui 应用程序,尽管我不认为这个 python-for-android 仅限于 kivy 应用程序。

因此,它们是完全不同的项目,恰好有一个同名的组件。SL4A 用于在 android 上运行 python 脚本,我不太了解它的限制或细节。Kivy 是一个python 图形框架(不限于android),可以通过自己不同的python-for-android 项目编译成完全集成的gui android 应用程序。

您可以查看(例如)kivy 展示柜以获取一些简单的 kivy 功能​​示例,或者查看平面珠宝以查看使用 kivy 制作的简单游戏示例。这些只是示例,还有更多可能。

于 2013-08-28T10:28:38.833 回答
10

我发现这非常有用(也是最近的):

在 Android 中嵌入 Python(教程系列)

http://techventura.wordpress.com/2014/04/21/embedding-python-in-android-series/

它描述了如何使用 Kivy 相关的 Python-for-Android 将 Python 嵌入到 Android 应用程序中,而不是 Kivy 本身(据我所知,Kivy 和 Python-for-Android 的文档中并没有真正描述),这在各种场景中都很有用(例如现有的 Java 应用程序,直接使用本机 GUI 等)

由于 Kivy 的 Python-for-Android 比 SL4A(ASE) 的 Py4A 开发得更积极,所以在我看来这是一条可行的路。

(我认为这与Is there a way to run Python on Android?也非常相关,并且可能更合适,但要回答这个问题需要比我目前拥有的更多声誉。)

就最初的问题而言:我看到的 Kivy 的 Python-for-Android 和 SL4A(ASE) 的 Py4A 之间最相关的区别是后者今天仍然以“alpha 质量”的形式提供,而前者似乎还很遥远更活跃。当然如果你把 Kivy 作为一个整体来看,它是一个跨平台的 GUI 库。

另外,我对各种解决方案的研究结果:

  • 谷歌的 Py4A + SL4A(ASE):使用但 alpha 质量,未积极开发
  • 基维
    • 提供 Python-for-Android,从 Java 调用 python 代码
    • 提供 Pyjnius,从 python 调用 Java 代码
    • 似乎正在积极开发
    • 有我上面链接的教程嵌入到 Java Android 应用程序中
    • 如果有兴趣,跨平台 GUI(Kivy 本身)
  • QPython
    • 主要是一个交互式环境,用于在 Android 上启动 python 脚本
    • 基于 Py4A,但据说 Pyjnius(见上文)可用
    • 嵌入到 Java 应用程序中是可用的,但有一些限制:Python 作业必须以 Intent 开始,结果从标准输出收集;我认为,这意味着在某些情况下可能需要更多的分离。
  • python.org:完全没有提到Android
于 2014-07-03T13:16:24.960 回答
1

你试过 QPython 吗?这是一个新的适用于安卓实例的python,它提供了更多的功能。

于 2014-01-20T08:51:24.080 回答
0

除了这里的答案,我还要添加似乎正在积极开发的原始 Py4A 的分支:https ://github.com/kuri65536/sl4a

我不能保证质量或易用性。有 .apks 可以安装,所以看起来相当简单。

于 2018-01-21T16:50:45.357 回答