Kivy和PY4A的区别

29

我是Android开发的新手,之前有一些Java、C#、Python等语言的经验。Python 是我最喜欢的语言之一,我想用它编写 Android 应用程序。
然后我看到了这个问题:
有没有办法在 Android 上运行 Python?
得票最高的答案提到了 KivyASE(现在是 SL4A 并包括 PY4A)。
然而,在一些谷歌搜索之后,我没能找到关于 KivyPY4A 之间差异的任何有用信息。搜索 KivySL4A 之间的区别也徒劳无功。

所以,关于 KivyPY4A
有人可以用简单易懂的语言解释一下吗?
- 它们之间的相似和不同之处是什么?
- 它们的优点和缺点是什么?
- 还有其他好用的替代品吗?


1
Kivy - 开源Python库,用于快速开发应用程序,利用创新的用户界面,如多点触控应用程序。Scripting Layer for Android(SL4A)通过允许您直接在Android设备上编辑和执行脚本和交互式解释器,将脚本语言带到Android。 - Bakuriu
4个回答

25

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

SL4A允许您在Android上运行Python脚本。他们的PY4A是其工具链中的一步,但我对此了解不多。我知道它与android api有一些集成(您可以使用某些硬件等),但在如何运行程序方面存在限制(它们不是完整的应用程序,没有GUI等)。这些是我从看到其他帖子推断出来的,我还没有尝试过,请勿仅凭我的话对细节进行确认。(编辑:实际上,似乎有一些打包APK和创建GUI的多种方式,但我不知道详情)

Kivy是一个支持许多操作系统(Linux、Windows、OSX、Android、iOS,可能已经有更多)的图形框架。您可以使用它构建Python GUI。 Kivy项目还启动了自己的python-for-android项目,提供将Python解释器编译为Android并将其打包为实际的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功能示例,或Flat Jewels以获取使用Kivy制作的简单游戏示例。这些只是示例,还有很多其他可能性。


你可以在SL4A上使用GUI,包括本地和Web视图。Kivy的开发者在一些会议上对SL4A进行了误导,因此你需要预料到可能会有一些混淆。 - Carl Smith
抱歉犯错了,我的误解来自于阅读SL4A文档,该文档主要讨论脚本编写的可能性。 - inclement

10
我发现这个非常有用(而且最近更新): 将Python嵌入Android中(教程系列)

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更活跃地开发,因此对我来说,这似乎是正确的方法。
(我认为这也非常相关,可能更合适,有没有办法在Android上运行Python?,但回答需要比我目前拥有的声望更多。)
至于最初的问题:我看到Kivy的Python-for-Android和SL4A(ASE)的Py4A之间最相关的区别是,后者仍然以“alpha质量”提供,而前者似乎更为活跃。当然,如果您将Kivy作为整体,它是一个跨平台的GUI库。
此外,我的研究结果涉及各种解决方案:
  • Google的Py4A + SL4A(ASE):使用但质量尚未稳定,不再积极开发
  • 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

1

你尝试过QPython吗?它是一种新的面向Android的Python实例,提供更多功能。


0
除了这里的答案,我还想补充一下原始Py4A的分支,它似乎正在积极开发中:https://github.com/kuri65536/sl4a 我无法保证其质量或易用性。有.apk文件可供安装,因此似乎相当简单明了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接