web-dev-qa-db-fra.com

QPython ou Kivy pour Android programmation avec Python - produisant une apk installable)

Après avoir lu plusieurs questions et réponses sur SO, je me rends compte que l'une a 2 options, à savoir QPython et Kivy pour faire de la programmation pour Android, cependant, apparemment, les deux adoptent des approches différentes. J'essaie de valider ma compréhension et de voir si je manque des informations clés.

  • QPython permet l'utilisation de la bibliothèque Kivy pour développer des applications graphiques
  • QPython et Kivy utilisent tous les deux SL4A, tandis que QPython a étendu SL4A standard (ou ses liaisons pour Python) en ajoutant quelques NFC et fonctions similaires
  • QPython est utilisé pour créer des scripts python qui peuvent utiliser un large éventail de modules, de bibliothèques, mais ils ont besoin que QPython soit installé pour être exécuté sur le périphérique cible. Il n'y a aucun moyen de regrouper le script dans une apk.
  • Kivy OTOH, permet au développeur d'écrire des applications qui se compilent sur apk, en utilisant leur système de build basé sur le cloud (alternative - le système de build local peut être configuré sur Ubuntu Linux) [ Cependant, j'ai remarqué que la plupart des les exemples d'apk qui utilisent Kivy sont assez grands, dans la plage de 40 Mo. Ai-je raté quelque chose? ]
  • QPython apk a 2 versions, c'est-à-dire une pour Python-2.7 et une autre pour Python-3.x. Pour Kivy, je ne sais pas de quelle version il s'agit.
  • Le script d'exemple QPython (HelloWorld.py) ne semble pas se comporter comme prévu, à partir du dernier QPython-3.x de Market, sur un système Android KitKat (4.4.2). J'obtiens le pour entrer du texte, mais je m'attends à ce qu'un Toast apparaisse, mais rien ne se passe.
  • Ayez l'impression que QPython et Kivy sont développés par un seul développeur chacun (ou qu'une seule personne est vraiment active à l'heure actuelle), et n'ont pas encore de communauté biggish. [ C'est ma plus grande préoccupation ] Je remarque qu'il y a 3-4 questions avec la balise 'qpython' sur SO, et plus de mille avec 'kivy' !
  • J'ai également l'impression qu'en ce moment le développement de Kivy est un peu plus actif (peut-être assez actif), mais pour QPython, je n'ai pas une image claire.
  • Kivy semble essayer d'élargir la nature de l'application qui pourrait éventuellement être écrite en l'utilisant, par rapport à QPython. Il existe des API comme plyer et pyjnius qui aident à élargir les possibilités. Peut-être assez significativement, par rapport à QPython.
  • QPython et Kivy semblent être en cours de développement. Les plantages (/ échecs) du programme (/ script) semblent être signalés sur les deux ensembles d'outils.

Dans l'ensemble, l'opinion en conséquence (des points ci-dessus) semble osciller en faveur de Kivy, un peu plus. La compréhension est-elle correcte? Ai-je raté un point crucial? Ce n'est pas une question rhétorique et je ne cherche que des réponses factuelles.

24
icarus74

QPython permet l'utilisation de la bibliothèque Kivy pour développer des applications graphiques

Oui, qpython est un interpréteur + outils associés, et a une certaine intégration Nice kivy. Cependant, vous ne pouvez pas compiler le code kivy vers une apk autonome avec qpython + Android seul.

QPython et Kivy utilisent tous les deux SL4A, tandis que QPython a étendu SL4A standard (ou ses liaisons pour Python) en ajoutant quelques NFC et des fonctions similaires

Kivy n'utilise pas SL4A. Nous réalisons l'intégration de l'api Android principalement via pyjnius, une bibliothèque pour envelopper automatiquement les classes Java avec python, qui vous permet d'appeler directement l'api Java. Nous avons également résumé certaines choses standard dans une interface Pythonic avec plyer.

(J'ai vu plus tard que vous les avez déjà trouvés)

QPython est utilisé pour créer des scripts python qui peuvent utiliser un large éventail de modules et de bibliothèques, mais ils ont besoin que QPython soit installé pour être exécuté sur le périphérique cible. Il n'y a aucun moyen de compresser le script dans une apk.

Je n'utilise pas beaucoup qpython, mais je pense que c'est correct, bien qu'il puisse y avoir certains outils pour transformer les scripts en apk dans certaines circonstances (par exemple, vous pouvez utiliser les outils de construction de kivy si vous avez une interface kivy, ou peut-être que sl4a a quelque chose pour cela ).

Kivy OTOH, permet au développeur d'écrire des applications qui se compilent sur apk, en utilisant leur système de build basé sur le cloud (alternative - le système de build local peut être configuré sur Ubuntu Linux) [Cependant, j'ai remarqué que la plupart des exemples d'apk qui utilisent Kivy sont assez gros , dans la gamme 40MB. Ai-je manqué quelque chose ?]

Nous avons un système de construction basé sur le cloud de base, mais rien de tel à l'heure actuelle, presque tout le monde construit des apks sur sa propre machine en utilisant nos outils de construction pour Android. Ceux-ci s'exécutent sur Linux ou OSX, et peuvent facilement être exécutés sur une machine virtuelle si nécessaire.

Une application minimale a environ 7 Mo de taille APK en raison de la nécessité de regrouper l'interpréteur python et de nombreux modules.

QPython apk a 2 versions, c'est-à-dire une pour Python-2.7 et une autre pour Python-3.x. Pour Kivy, je ne sais pas de quelle version il s'agit.

Kivy lui-même prend en charge python3, mais nos outils de construction Android ne prennent en charge que python2.7 pour l'instant.

Ayez l'impression que QPython et Kivy sont développés par un seul développeur chacun (ou qu'une seule personne est vraiment active à l'heure actuelle), et n'ont pas encore de communauté biggish. [C'est ma plus grande préoccupation] Je remarque qu'il y a 3-4 questions avec la balise 'qpython' sur SO, et plus de mille avec 'kivy'!

Le développement de Kivy est assez actif avec plusieurs contributeurs réguliers et des contributeurs plus sporadiques. Vous pouvez voir par exemple l'activité de validation récente sur github . C'est certainement bien plus qu'un seul développeur!

Kivy semble essayer d'élargir la nature de l'application qui pourrait éventuellement être écrite en l'utilisant, par rapport à QPython. Il existe des API comme plyer et pyjnius qui aident à élargir les possibilités. Peut-être assez significativement, par rapport à QPython.

Je pense que qpython inclut pyjnius. Je ne suis pas sûr de l'avocat.

QPython et Kivy semblent être en cours de développement. Les plantages (/ échecs) du programme (/ script) semblent être signalés sur les deux ensembles d'outils.

Je ne suis pas sûr de ce que vous regardez, mais tout projet non trivial aura des plantages/échecs/bugs signalés. Je ne pense pas que Kivy soit particulièrement instable en soi.

Dans l'ensemble, l'opinion en conséquence (des points ci-dessus) semble osciller en faveur de Kivy, un peu plus.

J'aurais dit que qpython et kivy sont des choses assez différentes. Qpython vous permet d'écrire et d'exécuter des scripts, tandis que kivy est un cadre graphique et des outils associés pour créer des applications autonomes. Il y a un certain chevauchement avec les tâches qui pourraient être réalisées avec les deux, mais aussi beaucoup de choses où elles ne conviennent pas toutes les deux - par exemple, je pense que qpython est probablement beaucoup plus pratique pour créer des scripts rapides sans interface graphique, par exemple. automatisation simple (je pense que cela est possible), alors que je pense que kivy est un bien meilleur choix pour créer des applications autonomes avec une apparence non triviale. Bien sûr, vous pouvez écrire du code kivy en qpython, comme indiqué, mais ce n'est pas une excellente expérience utilisateur pour tout ce qui n'est pas trivial et vous avez quand même besoin d'une machine de bureau/ordinateur portable pour créer une apk autonome.

15
inclement

Il existe au moins deux autres moyens (bien qu'à ma connaissance uniquement théoriques) de faire fonctionner Python code sur Android:

  • Utilisez jython et convertissez le Java bytecode en Dalvik, comme mentionné ailleurs . Malheureusement, pas toutes les bibliothèques CPython, par exemple numpy, sont disponibles pour jython, et si vous utilisez Java gardez à l'esprit que Android ne fournit pas les mêmes que par exemple le bureau JRE
  • Utilisez nuitka , qui génère du code C++ à partir de votre code Python. Utilisez ensuite Android-ndk .
3
Tobias Kienzler