Kivy和Java在Android应用程序上的区别

2022-09-02 03:39:08

我是一名Python开发人员,在Java中创建Android应用程序的经验很少,并且想要创建一个应用程序,该应用程序将访问我的大学门户网站,检索一些数据并在视图上显示。

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

1)哪一个更容易,更快速地开发Android应用程序?

2)Kivy是否有任何Android功能限制?

3)最后,使用kivy开发的Android应用程序会像使用java开发的机器人应用程序一样快运行吗?


答案 1

这是一个相当主观的问题。

1)哪一个更容易,更快速地开发Android应用程序?

我认为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受到强烈限制的事情,否则这种差异不太可能变得重要。你建议的任务不会以这种方式受到限制。


答案 2

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

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

因此,值得事先查看api,以查看您必须访问的Android API的各个部分是否需要这样做。