适用于Android应用程序的Kivy和Java之间的区别

Gui*_*sta 20 python java android kivy

对于有一些使用java创建Android应用程序的经验的python开发人员.我想创建一个小应用程序,访问我的大学门户网站并检索一些数据,以便在Android上轻松访问它.

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

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

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

inc*_*ent 16

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

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

我认为kivy有一个强有力的论据,但这没有客观的答案.

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

kivy项目包括pyjnius,一个通过python访问java类的工具,原则上我认为这应该是任意的(编辑:反射,而不是任意,但可能不是立即重要的限制)访问java apis.

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

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

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

最终答案可能是否定的,但除非你做的事情很有限,否则差别很小.你建议的任务不会受到这种限制.


Tsh*_*man 13

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

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

因此,事先看看api是值得的,看看你需要访问的android api的部分是否需要.