【问题标题】:Difference between Kivy and PY4AKivy 和 PY4A 的区别
【发布时间】:2013-08-30 23:18:37
【问题描述】:

我是 android 开发新手,我对 Java、C#、Python 等有一定的经验。Python 是我的最爱,我想用它编写 Android 应用程序。
然后我看到了这个问题:
Is there a way to run Python on Android?
投票最多的答案提到了KivyASE(现在是SL4A,包括PY4A)。
但是,经过一番谷歌搜索后,我找不到任何有关KivyPY4A 之间区别的有用信息。寻找KivySL4A 之间的区别也没有结果。

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

【问题讨论】:

  • “Kivy - 开源 Python 库,用于快速开发利用创新用户界面的应用程序,例如多点触控应用程序。” vs “Android 脚本层 (SL4A) 通过允许您直接在 Android 设备上编辑和执行脚本和交互式解释器,为 Android 带来脚本语言。”我找不到两者之间的任何共同点......

标签: android python kivy sl4a


【解决方案1】:

令人困惑的是,有 两个 项目名为“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 应用程序的方法(包括与 pyjnius 的 java api 集成等)。 Kivy 与它很好地集成,因此您可以轻松地为 android 编译一个 python gui 应用程序,尽管我不认为这个 python-for-android 仅限于 kivy 应用程序。

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

您可以查看(例如)kivy showcase 了解一些简单的 kivy 功能​​示例,或查看flat jewels 了解使用 kivy 制作的简单游戏示例。这些只是示例,还有更多可能。

【讨论】:

  • 你可以在 SL4A、native 和 webviews 上做 GUI。 kivy 家伙在缺点和其他东西上歪曲了 SL4A,所以你不得不期待一些混乱。
  • 抱歉这个错误,我的误解来自阅读 SL4A 文档,该文档主要讨论了脚本编写的可能性。
【解决方案2】:

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

在 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 库。

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

  • Google 的 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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-04
        • 2018-02-07
        • 2013-08-07
        • 2011-10-20
        • 2020-01-23
        相关资源
        最近更新 更多