Kivy和PY4A之间的区别

时间:2013-08-28 02:32:46

标签: android python kivy sl4a

我是Android开发的新手,我有过Java,C#,Python等方面的经验.Python是我最喜欢的,我想用它编写Android应用程序。
然后我看到了这个问题:
Is there a way to run Python on Android?
投票最多的答案提到KivyASE(现在为SL4A并包含PY4A)。
但是,经过一些谷歌搜索后,我无法找到有关KivyPY4A之间差异的任何有用信息。搜索KivySL4A之间的差异也是徒劳的。

因此,至于KivyPY4A
有人可以用简单的方式解释:
- 它们之间有什么相似之处和区别? - 他们的好坏部分是什么? - 还有其他好的选择吗?

4 个答案:

答案 0 :(得分:25)

令人困惑的是,有一些名为'python for android'的两个项目。

SL4A允许你在android上运行python脚本。他们的PY4A是他们工具链中的一个步骤,但我对此并不了解。我知道有一些与android apis的集成(你可以使用一些硬件等),但是如何运行程序的限制(它们不是完整的应用程序,没有gui等)。这是我从看到其他帖子推断的东西,我没有尝试过,不要在细节上接受我的话。 (编辑:实际上似乎有一些能力打包apks和多种方式来创建一个gui,我不知道细节)

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

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

您可以看到(例如)kivy showcase以获取一些简单的kivy功能的示例,或flat jewels作为在kivy中制作的简单游戏的示例。这些只是一些例子,还有很多可能。

答案 1 :(得分:9)

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

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

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

它描述了如何在Android应用程序中嵌入Python,使用与Kivy相关的Python-for-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库。

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

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

答案 2 :(得分:1)

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

答案 3 :(得分:0)

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

我无法保证质量或易用性。有.apks安装所以它似乎相当简单。