25

SOに関するいくつかのQ&Aを読んだことで、Android用のプログラミングを行うにはQPythonとKivyの2つのオプションがあることがわかりましたが、明らかに両方とも異なるアプローチをとっています。私は自分の理解を検証し、いくつかの重要な情報が欠けているかどうかを確認しようとしています.

  • QPython では、グラフィカル アプリケーションの開発に Kivy ライブラリを使用できます
  • QPython と Kivy は両方とも SL4A を使用しますが、QPython は標準の SL4A (または Python のバインディング) を拡張し、いくつかの NFC と同様の機能を追加しています。
  • QPython は、幅広いモジュール、ライブラリを使用できる Python スクリプトを作成するために使用されますが、ターゲット デバイスで実行するには QPython をインストールする必要があります。スクリプトを apk にパッケージ化する方法はありません。
  • Kivy OTOH により、開発者は、クラウドベースのビルド システムを使用して、apk にコンパイルするアプリケーションを作成できます (別の方法として、Ubuntu Linux でローカル ビルド システムをセットアップできます) [ただし、Kivy を使用するサンプル apk のほとんどがかなり大きいことに気付きました。 、40MBの範囲で。何か見逃しましたか?]
  • QPython apk には、Python-2.7 用と Python-3.x 用の 2 つのバージョンがあります。Kivyの場合、どのバージョンかわかりません。
  • QPython サンプル スクリプト (HelloWorld.py) は、Android Kitkat (4.4.2) システムで、Market の最新の QPython-3.x から期待どおりに動作しないようです。テキストを入力するダイアログが表示されますが、トーストがポップアップすることを期待していますが、何も起こりません。
  • QPython と Kivy の両方がそれぞれ 1 人の開発者によって開発されている (または現在実際に活動しているのは 1 人だけ) という印象を受け、まだ大きなコミュニティはありません。[これが私の最大の関心事です ] SO に 'qpython' タグの付いた質問が 3 ~ 4 個あり、'kivy' の付いた質問が 1,000 個以上あることに気付きました!
  • また、現時点で Kivy の開発はやや活発 (おそらくかなり活発) であるという印象を受けますが、QPython については明確な全体像がわかりません。
  • Kivy は、QPython と比較して、それを使用して作成できる可能性のあるアプリケーションの性質を拡張しようとしているようです。可能性を広げるのに役立つplyerpyjniusのような API があります。QPython と比較すると、おそらくかなり重要です。
  • QPython と Kivy はどちらもかなり開発中のようです。プログラム (/スクリプト) のクラッシュ (/障害) は、両方のツール セットで報告されているようです。

全体として、(上記の点の)結果としての意見は、Kivy に有利に傾いているように見えます。その理解は正しいですか?重要なポイントを見逃していませんか?これは修辞的な質問ではなく、事実に基づく回答のみを探しています。

4

2 に答える 2

16

QPython では、グラフィカル アプリケーションの開発に Kivy ライブラリを使用できます

はい、qpython はインタープリター + 関連ツールであり、いくつかの素敵な kivy 統合があります。ただし、qpython+android だけで kivy コードをスタンドアロン apk にコンパイルすることはできません。

QPython と Kivy は両方とも SL4A を使用しますが、QPython は標準の SL4A (または Python のバインディング) を拡張し、いくつかの NFC と同様の機能を追加しています。

Kivy は SL4A を使用しません。Android API の統合は、主に pyjnius (Java クラスを Python で自動的にラップするためのライブラリ) を介して実現します。これにより、Java API を直接呼び出すことができます。また、いくつかの標準的なものを、plyer を使用して pythonic インターフェイスに抽象化しました。

(後で、あなたがすでにこれらを見つけていることを知りました)

QPython は、幅広いモジュール、ライブラリを使用できる Python スクリプトを作成するために使用されますが、ターゲット デバイスで実行するには QPython をインストールする必要があります。スクリプトを apk にパッケージ化する方法はありません。

私はqpythonをあまり使用しませんが、これは正しいと思いますが、状況によってはスクリプトをapkに変換するツールがいくつかあるかもしれません(たとえば、kivyインターフェースがある場合はkivyのビルドツールを使用できます。または、sl4aにはこれ用の何かがあります) )。

Kivy OTOH を使用すると、開発者はクラウドベースのビルド システムを使用して、apk にコンパイルするアプリケーションを作成できます (別の方法として、Ubuntu Linux でローカル ビルド システムをセットアップできます) [ただし、Kivy を使用するサンプル apk のほとんどがかなり大きいことに気付きました。 、40MBの範囲で。私は何かを逃しましたか?]

私たちは基本的なクラウド ベースのビルド システムを持っていますが、今のところそのようなものは他にありません。ほとんどの人が Android 用のビルド ツールを使用して自分のマシンで apk をビルドしています。これらは Linux または OSX で実行され、必要に応じて仮想マシンで簡単に実行できます。

Python インタープリターと多くのモジュールをバンドルする必要があるため、最小限のアプリの APK サイズは約 7MB です。

QPython apk には、Python-2.7 用と Python-3.x 用の 2 つのバージョンがあります。Kivyの場合、どのバージョンかわかりません。

Kivy 自体は python3 をサポートしていますが、Android ビルド ツールは今のところ python2.7 のみをサポートしています。

QPython と Kivy の両方がそれぞれ 1 人の開発者によって開発されている (または現在実際に活動しているのは 1 人だけ) という印象を受け、まだ大きなコミュニティはありません。[これが私の最大の関心事です] SO に 'qpython' タグの付いた質問が 3 ~ 4 個あり、'kivy' の付いた質問が 1000 個以上あることに気付きました!

Kivy の開発は非常に活発で、いくつかの定期的な貢献者と散発的な貢献者がいます。たとえば、github で最近のコミット アクティビティを確認できます。それは確かに、単一の開発者よりもはるかに多くのことです!

Kivy は、QPython と比較して、それを使用して作成できる可能性のあるアプリケーションの性質を拡張しようとしているようです。可能性を広げるのに役立つ plyer や pyjnius のような API があります。QPython と比較すると、おそらくかなり重要です。

qpython には pyjnius が含まれていると思います。プライヤーについては不明です。

QPython と Kivy はどちらもかなり開発中のようです。プログラム (/スクリプト) のクラッシュ (/障害) は、両方のツール セットで報告されているようです。

何を見ているのかわかりませんが、重要なプロジェクトにはクラッシュ/失敗/バグが報告されます。Kivy が特に本質的に不安定だとは思いません。

全体として、(上記の点の)結果としての意見は、Kivy に有利に傾いているように見えます。

私は、qpython と kivy はまったく別のものだと言ったでしょう。Qpython ではスクリプトを記述して実行できますが、kivy はスタンドアロン アプリを作成するためのグラフィカル フレームワークおよび関連ツールです。それらの両方で達成できるタスクと重複する部分がありますが、両方が適していないこともたくさんあります-たとえば、qpython は、たとえば単純な自動化 (私はこれは可能だと思います)、一方、自明ではない GUI を使用してスタンドアロン アプリを作成するには、kivy の方がはるかに優れていると思います。もちろん、前述のように、qpython で kivy コードを作成することもできますが、これは重要なユーザー エクスペリエンスとは言えず、スタンドアロンの apk を作成するにはとにかくデスクトップ/ラップトップ マシンが必要です。

于 2015-01-17T15:59:07.440 に答える
3

Android で Python コードを実行するには、少なくとも 2 つの方法があります (ただし、私の知る限り、理論的なものにすぎません)。

  • を使用して Java バイトコードを Dalvik に変換します。残念ながら、すべての CPython ライブラリ (例: numpy) が で利用できるjythonわけではありません。また、Java ライブラリを使用する場合は、Android がデスクトップ JRE などと同じライブラリを提供していないことに注意してください。
  • Python コードから C++ コードを生成するを使用します。次に、を使用します。
于 2015-03-02T09:22:42.970 に答える