21

我是一名 python 开发人员,几乎没有在 java 中创建 android 应用程序的经验,我想创建一个应用程序来访问我的大学门户网站、检索一些数据并在视图上显示。

所以,在研究了 Kivy 之后,我有几个问题:

1)哪一个更容易和更快地开发android应用程序?

2) Kivy 有任何安卓功能限制吗?

3)最后,使用 kivy 开发的 android 应用程序运行速度是否与使用 java 开发的一样快?

4

2 回答 2

18

这是一个比较主观的问题。

1) 哪一个更容易和更快地开发安卓应用程序?

我认为kivy有很强的论据,但这没有客观的答案。

2) Kivy 是否对访问 android 的某些部分有限制(例如未完全与其 api 集成)?

kivy 项目包括 pyjnius,这是一个通过 python 访问 java 类的工具,原则上我认为这应该提供对 java api 的任意(编辑:反射,不是任意,但可能不限于直接重要的方式)访问。

在实践中,预构建的 python 包装器是一项正在进行的工作,尽管正在快速改进。android python 库已经可以轻松访问许多东西(包括但不限于意图、振动、加速度计等)。即使还没有 python 包装器,也可以很容易地完成必要的工作。

编辑:最近在 Kivy 的plyer项目上有了出色的工作,旨在为特定于平台的工具提供一个透明的 api,这样您就可以调用它一次,并在不知道细节的情况下在不同的系统上获得相同的行为。它包括对部分 android api 的有用支持。

3) 最后,使用 kivy 开发的 android 应用程序运行速度与使用 java 开发的一样快吗?

最终答案可能是否定的,但除非你正在做一些强烈的 cpu 限制的事情,否则差异不太可能很重要。您建议的任务不会以这种方式受到限制。

于 2013-09-01T13:37:14.523 回答
14

为了完成 inclement 的回答,pyjnius 确实允许访问很多 android api。但这并不完美,调用现有的类并不总是足够的,并且android程序员经常需要创建将被android调用来管理事件的代码,有两种方法可以做到这一点,都被android api使用。

  • 第一个是接口:您需要创建一个实现现有 java 接口的类,pyjnius 可以这样做,您创建一个 python 类并声明它实现的 java 接口,并有一个装饰器来声明您必须声明的方法。
  • 第二个是子类化,你需要继承一个现有的java类并覆盖一些方法,而我们还没有办法用pyjnius做到这一点,所以对于这些,你必须创建一个java类并使用它在你的程序中(幸运的是你可以将它与 kivy/pyjnius 混合,在那种情况下它不能是 100% python)。

所以值得事先看一下 api,看看你必须访问的 android api 的部分是否需要它。

于 2013-09-01T22:17:58.723 回答