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

时间:2013-08-31 23:44:24

标签: java android python kivy

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

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

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

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

2 个答案:

答案 0 :(得分: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开发的应用程序一样快?

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

答案 1 :(得分:12)

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

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

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