QPython 或 Kivy for Android programming with Python - 生成可安装的 apk

QPython or Kivy for Android programming with Python - producing installable apk

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

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

QPython allows usage of Kivy library for developing graphical applications

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

QPython and Kivy both use SL4A, while QPython has expanded standard SL4A (or it's bindings for Python) by adding some NFC and similar functions

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

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

QPython is used to create python scripts that can use wide range of modules, libraries, but they need QPython installed to be executed on target device. There is no way to package script into an apk.

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

Kivy OTOH, allows developer to write applications that compile to apk, using their cloud based build system (alternative - local build system can be set up on Ubuntu Linux) [However, I noticed that most of the sample apk's that use Kivy are pretty large, in the 40MB range. Did I miss anything ?]

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

由于需要捆绑 python 解释器和大量模块,最小的应用程序大约有 7MB 的 APK 大小。

QPython apk has 2 version i.e. one for Python-2.7 and another one for Python-3.x. For Kivy, I'm not sure which version it is.

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

Get the impression that both QPython and Kivy are developed by a single developer each (or only one person is really active at present), and don't yet have a biggish community. [This is my biggest concern] I notice that there are 3-4 questions with 'qpython' tag on SO, and more than thousand with 'kivy'!

Kivy 的开发非常活跃,有几个定期贡献者和更多零星贡献者。例如,您可以看到最近的提交 activity on github。肯定不止一个开发者!

Kivy seems to be trying to expand the nature of application that could possibly be written using it, compare to QPython. There are API's like plyer and pyjnius that help expand the possibilities. Perhaps quite significantly, compared to QPython.

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

Both QPython and Kivy seem to be heavily under development. Program (/ script) crashes (/ failures) seem to be reported on both set of tools.

我不确定您在看什么,但是任何重要的项目都会有 crashes/failures/bugs 报告。我不认为 kivy 本质上特别不稳定。

Overall, the opinion as a result (of above points) appears to swing in favour of Kivy, a bit more.

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

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

  • 使用 and convert the Java bytecode to Dalvik, as mentioned elsewhere。不幸的是,并非所有 CPython 库,例如numpy,可用于 jython,如果您使用 Java 库,请记住 Android 不提供与例如桌面 JRE
  • 使用, which generates C++ code from your Python code. Then use the .