QPython或Kivy用于使用Python进行Android编程 - 生成可安装的apk

时间:2015-01-17 15:38:43

标签: android python kivy sl4a qpython

在SO上阅读了几个Q& A,我意识到有一个选项,即QPython和Kivy为Android做编程,但是,显然两者都采用不同的方法。我试图验证我的理解,看看我是否遗漏了一些关键信息。

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

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

2 个答案:

答案 0 :(得分:14)

  

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上设置本地构建系统)[但是,我注意到大多数示例apk'使用Kivy的相当大,在40MB范围内。我错过了什么吗?]

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

由于需要捆绑python解释器和许多模块,因此最小应用程序的大小约为7MB。

  

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

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

  

让人觉得QPython和Kivy都是由一个开发者开发的(或者目前只有一个人真正活跃),而且还没有一个庞大的社区。 [这是我最关心的问题]我注意到有三个问题与qpython' SO上的标记,以及' kivy'!

的数千

Kivy的发展非常活跃,有几个常规贡献者加上更多的零星。您可以查看最近的提交活动on github。它肯定比单个开发人员更多!

  

与QPython相比,Kivy似乎试图扩展可能使用它编写的应用程序的本质。像plyer和pyjnius这样的API有助于扩展可能性。与QPython相比,可能非常重要。

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

  

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

我不确定你在看什么,但任何非平凡的项目都会报告崩溃/失败/错误。我不认为kivy特别不稳定。

  

总的来说,结果(上述观点)的观点似乎更倾向于Kivy。

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

答案 1 :(得分:3)

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

  • 使用并将Java字节码转换为Dalvik,如上所述elsewhere。不幸的是,不是所有的CPython库,例如numpy可用于jython,如果您使用的是Java库,请注意Android不提供与{1}}相同的内容。桌面JRE
  • 使用,它会从Python代码生成C ++代码。然后使用