在SO上阅读了几个Q& A,我意识到有一个选项,即QPython和Kivy为Android做编程,但是,显然两者都采用不同的方法。我试图验证我的理解,看看我是否遗漏了一些关键信息。
总的来说,结果(上述观点)的观点似乎更倾向于Kivy。理解是否正确?我错过了任何关键点吗?这不是一个修辞问题,我只是在寻找事实答案。
答案 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代码的方法:
numpy
可用于jython
,如果您使用的是Java库,请注意Android不提供与{1}}相同的内容。桌面JRE