web-dev-qa-db-ja.com

KivyとJava for Androidアプリの違い

私はpython開発者で、Android app in Javaで、アクセスするアプリを作成したいです。私の大学のWebポータルで、データを取得してビューに表示します。

それで、Kivyを研究した後、私はいくつかの質問があります:

1)開発がより簡単で迅速なのはどれですかAndroidアプリ?

2) KivyにはAndroid機能の制限がありますか?

そして最後に、kivyを使用して開発されたAndroidアプリは、Javaを使用して開発されたアプリと同じくらい高速に実行されますか?

これはかなり主観的な質問です。

1)開発がより簡単で迅速なAndroidアプリはどれですか?

Kivyには強い議論があると思いますが、これには客観的な答えはありません。

2)KivyにはAndroid(APIと完全に統合されていないなど)の特定の部分にアクセスするための制限がありますか?

Kivyプロジェクトには、Pythonを介してJavaクラスにアクセスするためのツールであるpyjniusが含まれています。原則として、これは任意になります(編集:リフレクションで、任意ではありませんが、おそらくすぐに重要な方法で制限されません) )Java apisへのアクセス。

実際には、ビルド済みのpythonラッパーは進行中の作業ですが、急速に改善されています。Android pythonライブラリはすでに簡単です多くのもの(インテント、バイブレーション、加速度計などを含むがこれらに限定されない)へのアクセス。pythonラッパーがまだない場合でも、必要な作業を行うのは非常に簡単です。

編集:最近、Kivyの plyer プロジェクトで素晴らしい作業が行われ、プラットフォーム固有のツールに透過的なAPIを提供して、詳細を知らなくても一度呼び出すだけで、異なるシステムで同じ動作を取得できるようにすることを目的としています。 。 Android apiの一部の便利なサポートが含まれています。

3)そして最後に、kivyを使用して開発されたAndroidアプリは、Javaを使用して開発されたアプリと同じくらい速く実行されますか?

最終的には答えはおそらくノーですが、CPUが大幅に制限されていることをしているのでない限り、違いが重要になる可能性はほとんどありません。あなたが提案するタスクは、そのように制限されることはありません。

16
inclement

Inclementの答えを完成させるために、pyjniusは確かに多くのAndroid apiにアクセスできます。しかし、それは完璧ではありません。既存のクラスを呼び出すだけでは必ずしも十分ではなく、Android =プログラマーは、イベントを管理するためにAndroidによって呼び出されるコードを作成する必要があります。これを行うには、2つの方法があり、どちらもAndroid apiによって使用されます。

  • 最初のものはインターフェースです:既存のJavaインターフェースを実装するクラスを作成する必要があります、pyjniusはそれを行うことができます、あなたはpythonクラスを作成し、どれを宣言しますJava実装するインターフェイスであり、宣言する必要のあるメソッドを宣言するためのデコレータがあります。
  • 2つ目はサブクラス化です。既存のJavaクラスをサブクラス化し、いくつかのメソッドをオーバーライドする必要があります。pyjniusでそれを行う方法はまだありません。したがって、これらのクラスでは、 Javaクラスを作成し、プログラムで使用する必要があります(幸い、これをkivy/pyjniusと組み合わせることができますが、100%にすることはできませんpythonそのシナリオでは)。

したがって、事前にapiを調べて、アクセスする必要のあるAndroid apiの部分にそれが必要かどうかを確認することをお勧めします。

12
Tshirtman