web-dev-qa-db-ja.com

QPythonまたはKivy for Android Python-インストール可能なAPKの作成

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

  • QPythonでは、グラフィカルアプリケーションの開発にKivyライブラリを使用できます
  • QPythonとKivyは両方ともSL4Aを使用しますが、QPythonはいくつかのNFCおよび同様の関数を追加することで標準SL4A(またはPythonのバインディング)を拡張しました
  • 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から期待どおりに動作しないようです。ダイアログを使用してテキストを入力しますが、Toastがポップアップすることを期待していますが、何も起こりません。
  • QPythonとKivyの両方がそれぞれ1人の開発者によって開発されている(または現在アクティブになっているのは1人だけである)印象を受けます。まだ大きなコミュニティはありません。 [これが私の最大の関心事です] SOには「qpython」タグが3〜4個、「kivy」には1,000個以上の質問があります!
  • また、現時点では、Kivyの開発はやや活発(おそらくかなり活発)であるという印象を受けますが、QPythonの場合、私は明確なイメージを持っていません。
  • Kivyは、QPythonと比較して、おそらくそれを使用して記述できるアプリケーションの性質を拡張しようとしているようです。 plyerpyjnius のようなAPIがあり、可能性を広げます。 QPythonと比較して、おそらくかなり重要です。
  • QPythonとKivyの両方が非常に開発中のようです。プログラム(/スクリプト)のクラッシュ(/失敗)は、両方のツールセットで報告されるようです。

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

24
icarus74

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

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

QPythonとKivyは両方ともSL4Aを使用しますが、QPythonはいくつかのNFCおよび同様の関数を追加することで標準SL4A(またはPythonのバインディング)を拡張しました

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

(後でこれらを見つけたことがわかりました)

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

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

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

基本的なクラウドベースのビルドシステムがありますが、今のところそのようなものはありません。ほとんどの人がAn​​droid用のビルドツールを使用して自分のマシンで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に有利になっているように見えます。

Qpythonとkivyはまったく異なるものだと言っていただろう。 Qpythonではスクリプトを記述して実行できますが、kivyはグラフィカルなフレームワークであり、スタンドアロンアプリを作成するための関連ツールです。両方で達成できるタスクといくつかのオーバーラップがありますが、両方が適切ではない多くのこともあります-たとえば、qpythonはおそらくGUIなしでクイックスクリプトを作成するのにはるかに便利だと思います単純な自動化(これは可能だと思います)ですが、自明でないGUIでスタンドアロンアプリを作成するには、kivyの方がはるかに良い選択だと思います。もちろん、説明したようにqpythonでkivyコードを書くことはできますが、これは些細なことではないユーザーエクスペリエンスとしては優れておらず、スタンドアロンのapkを作成するにはデスクトップ/ラップトップマシンが必要です。

15
inclement

Androidで実行されているコードを取得するPython

  • jython を使用し、前述のようにJavaバイトコードをDalvikに変換します elsewhere 。残念ながら、すべてのCPythonライブラリ、たとえばnumpyは、jythonで使用できます。Javaライブラリを使用する場合、Androidは、たとえばデスクトップJRE
  • nuitka を使用すると、PythonコードからC++コードが生成されます。次に Android-ndk
3
Tobias Kienzler