25

在阅读了关于 SO 的几个问答后,我意识到一个有 2 个选项,即 QPython 和 Kivy 来为 Android 进行编程,但是,显然两者都采用不同的方法。我正在尝试验证我的理解,看看我是否遗漏了一些关键信息。

  • QPython 允许使用 Kivy 库来开发图形应用程序
  • QPython 和 Kivy 都使用 SL4A,而 QPython 通过添加一些 NFC 和类似功能扩展了标准 SL4A(或它的 Python 绑定)
  • QPython 用于创建可以使用各种模块、库的 Python 脚本,但它们需要安装 QPython 才能在目标设备上执行。没有办法将脚本打包成 apk。
  • Kivy OTOH,允许开发人员使用基于云的构建系统编写编译为 apk 的应用程序(替代方案 - 可以在 Ubuntu Linux 上设置本地构建系统)[但是,我注意到大多数使用 Kivy 的示例 apk 都非常大,在 40MB 范围内。我错过了什么吗?]
  • QPython apk 有 2 个版本,即一个用于 Python-2.7,另一个用于 Python-3.x。对于 Kivy,我不确定它是哪个版本。
  • QPython 示例脚本 (HelloWorld.py) 在 Android Kitkat (4.4.2) 系统上的行为似乎与预期不同,来自 Market 的最新 QPython-3.x。我得到了输入文本的对话框,但随后我希望弹出一个 Toast,但没有任何反应。
  • 给人的印象是 QPython 和 Kivy 都是由一个开发人员开发的(或者目前只有一个人真正活跃),并且还没有一个大的社区。[这是我最关心的问题] 我注意到在 SO 上有 3-4 个带有“qpython”标签的问题,并且有超过 1000 个带有“kivy”标签的问题!
  • 也得到的印象是,此时 Kivy 开发更加活跃(也许相当活跃),但对于 QPython,我没有清晰的画面。
  • 与 QPython 相比,Kivy 似乎正在尝试扩展可能使用它编写的应用程序的性质。有像plyerpyjnius这样的 API 可以帮助扩展可能性。与 QPython 相比,也许相当显着。
  • QPython 和 Kivy 似乎都在大力开发中。两组工具似乎都报告了程序(/脚本)崩溃(/失败)。

总体而言,(以上几点)的观点似乎更倾向于 Kivy。理解正确吗?我错过了任何关键点吗?这不是一个修辞问题,我只是在寻找事实的答案。

4

2 回答 2

16

QPython 允许使用 Kivy 库来开发图形应用程序

是的,qpython 是一个解释器 + 相关工具,并且有一些很好的 kivy 集成。但是,您不能仅使用 qpython+android 将 kivy 代码编译为独立的 apk。

QPython 和 Kivy 都使用 SL4A,而 QPython 通过添加一些 NFC 和类似功能扩展了标准 SL4A(或它的 Python 绑定)

Kivy 不使用 SL4A。我们主要通过pyjnius来实现android api集成,pyjnius是一个用python自动包装java类的库,它可以让你直接调用java api。我们还将一些标准的东西抽象为带有 plyer 的 Pythonic 接口。

(我后来看到你已经找到了这些)

QPython 用于创建可以使用各种模块、库的 Python 脚本,但它们需要安装 QPython 才能在目标设备上执行。没有办法将脚本打包成 apk。

我不太使用 qpython,但我认为这是正确的,尽管在某些情况下可能会有一些工具将脚本转换为 apks(例如,如果你有一个 kivy 接口,你可以使用 kivy 的构建工具,或者可能 sl4a 有这方面的东西)。

Kivy OTOH,允许开发人员使用基于云的构建系统编写编译为 apk 的应用程序(替代方案 - 可以在 Ubuntu Linux 上设置本地构建系统)[但是,我注意到大多数使用 Kivy 的示例 apk 都非常大,在 40MB 范围内。我错过了什么吗?]

我们有一个基本的基于云的构建系统,但目前没有其他类似的系统,几乎每个人都使用我们的 Android 构建工具在自己的机器上构建 apk。它们在 linux 或 OSX 上运行,如果需要,可以很容易地在虚拟机中运行。

由于捆绑 python 解释器和许多模块的必要性,一个最小的应用程序有大约 7MB 的 APK 大小。

QPython apk 有 2 个版本,即一个用于 Python-2.7,另一个用于 Python-3.x。对于 Kivy,我不确定它是哪个版本。

Kivy 本身支持 python3,但我们的 android 构建工具目前只支持 python2.7。

给人的印象是 QPython 和 Kivy 都是由一个开发人员开发的(或者目前只有一个人真正活跃),并且还没有一个大的社区。[这是我最关心的问题] 我注意到 SO 上有 3-4 个带有 'qpython' 标签的问题,而带有 'kivy' 的问题有上千个!

Kivy 开发非常活跃,有几个定期贡献者和更多零星贡献者。例如,您可以在 github 上查看最近的提交活动。它肯定不仅仅是一个开发人员!

与 QPython 相比,Kivy 似乎正在尝试扩展可能使用它编写的应用程序的性质。有像 plyer 和 pyjnius 这样的 API 可以帮助扩展可能性。与 QPython 相比,也许相当显着。

我认为 qpython 包括 pyjnius。不确定plyer。

QPython 和 Kivy 似乎都在大力开发中。两组工具似乎都报告了程序(/脚本)崩溃(/失败)。

我不确定你在看什么,但任何重要的项目都会报告崩溃/失败/错误。我不认为kivy本质上是不稳定的。

总体而言,(以上几点)的观点似乎更倾向于 Kivy。

我会说 qpython 和 kivy 是完全不同的东西。Qpython 允许您编写和运行脚本,而 kivy 是一个图形框架和相关工具来创建独立的应用程序。两者都可以完成的任务有一些重叠,但也有很多事情不适合 - 例如,我认为 qpython 可能更方便地制作没有 gui 的快速脚本,例如简单的自动化(我认为这是可能的),而我认为 kivy 是创建具有非平凡 gui 的独立应用程序的更好选择。当然,如前所述,您可以在 qpython 中编写 kivy 代码,但这对于任何重要的用户体验都不是很好,无论如何您都需要一台台式机/笔记本电脑来制作独立的 apk。

于 2015-01-17T15:59:07.440 回答
3

至少还有两种(尽管据我所知只是理论上的)让 Python 代码在 Android 上运行的方法:

  • 如其他地方所述,使用并将 Java 字节码转换为 Dalvik 。不幸的是,并非所有 CPython 库(例如)都可用于,如果您使用 Java 库,请记住 Android 不提供与桌面 JRE 相同的库numpyjython
  • 使用,它会从您的 Python 代码生成 C++ 代码。然后使用
于 2015-03-02T09:22:42.970 回答