QPython ou Kivy pour la programmation Android avec apk installable produit en Python

ayant lu plusieurs questions et Réponses sur SO, je me rends compte que l'on a 2 options i.e. QPython et Kivy pour faire de la programmation pour Android, cependant, apparemment les deux prennent des approches différentes. J'essaie de valider ma compréhension et de voir si je manque une information clé.

  • QPython permet l'utilisation de la bibliothèque Kivy pour le développement d'applications graphiques
  • QPython et Kivy utilisent tous deux le SL4A, tandis que QPython a étendu la norme SL4A (ou c'est des fixations pour Python) en ajoutant quelques fonctions NFC et similaires
  • QPython est utilisé pour créer des scripts python qui peuvent utiliser un large éventail de modules, bibliothèques, mais ils ont besoin de QPython installé pour être exécuté sur le périphérique cible. Il n'y a aucun moyen d'empaqueter script dans un apk.
  • Kivy OTOH, permet aux développeurs d'écrire des applications qui compilent vers apk, en utilisant leur système de construction basé sur le cloud (alternative-Local build system peut être mis en place sur Ubuntu Linux) [ cependant, j'ai remarqué que la plupart des apk de l'échantillon qui utilisent Kivy sont assez grands, dans la gamme de 40 Mo. Ai-je raté quelque chose ? ]
  • QPython apk a 2 versions, i.e. une pour Python-2.7 et une autre pour Python-3.x. Pour Kivy, Je ne sais pas quelle version c'est.
  • QPython exemple de script (HelloWorld.py) ne semble pas se comporter comme prévu, de la dernière QPython-3.x du marché, sur un système Android Kitkat (4.4.2). Je reçois la boîte de dialogue pour entrez un message, mais je M'attends à ce Qu'un Toast apparaisse, mais rien ne se passe.
  • avoir l'impression que QPython et Kivy sont développés par un seul développeur chacun (ou une seule personne est vraiment active à l'heure actuelle), et n'ont pas encore une communauté biggish. [ C'est ma plus grande préoccupation ] je remarque qu'il y a 3-4 questions avec "qpython' tag, et plus de mille avec 'kivy'!
  • Aussi l'impression qu'en ce moment Kivy development est un peu plus actif (peut-être assez actif), mais pour QPython Je n'ai pas une image claire.
  • Kivy semble essayer d'étendre la nature de l'application qui pourrait éventuellement être écrite en utilisant, comparer à QPython. Il y a des API comme plyer et pyjnius qui aident à étendre les possibilités. Peut-être de manière significative, par rapport à QPython.
  • QPython et Kivy semblent être fortement sous-développement. Programme (script) se bloque (ou d'échec) semblent être signalés sur les deux outils.

dans l'ensemble, il semble que L'opinion soit en faveur de Kivy, un peu plus. Est la compréhension correcte ? Ai-je manqué un point crucial ? Il ne s'agit pas d'une question rhétorique, et je ne cherche que des réponses factuelles.

22
demandé sur icarus74 2015-01-17 18:38:43

2 réponses

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

Oui, qpython est un interprète + outils associés, et quelques belles kivy intégration. Vous ne pouvez pas compiler le code kivy en apk autonome avec qpython+android seul.

QPython et Kivy utilisent tous les deux SL4A, alors que QPython a étendu la norme SL4A (ou ses fixations pour Python) en ajoutant un peu de NFC et similaire fonctions

Kivy ne pas utiliser SL4A. Nous réalisons l'intégration de l'api android principalement via pyjnius, une bibliothèque pour emballer automatiquement les classes java avec python, ce qui vous permet d'appeler directement l'api java. Nous avons aussi abstrait certaines choses standard à une interface pythonique avec plyer.

(j'ai vu plus tard que vous avez déjà trouvé ces)

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

Je n'utilise pas beaucoup qpython, mais je pense que c'est correct, bien qu'il puisse y avoir des outils qui tournent des scripts vers apks 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 de écrire des applications qui compilent à apk, en utilisant leur système de construction basé sur le nuage (alternative-Local build system peut être mis en place sur Ubuntu Linux) [cependant, j'ai remarqué que la plupart des apk de l'échantillon qui utilisent Kivy sont assez grands, dans la gamme de 40MB. Ai-je raté quelque chose ?]

nous avons un système de construction basé sur le nuage de base, mais rien d'autre comme cela en ce moment, presque tout le monde construit apks sur leur propre machine en utilisant nos outils de construction pour android. Ceux-ci fonctionnent sous linux ou OSX, et peut facilement être exécuté dans une machine virtuelle si nécessaire.

une application minimale a une taille D'APK d'environ 7MB à cause de la nécessité de regrouper l'interpréteur python et beaucoup de modules.

QPython apk a 2 versions, i.e. une pour Python-2.7 et une autre pour Python-3.x. Pour Kivy, Je ne sais pas quelle version c'est.

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

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

Kivy development est assez actif avec plusieurs contributeurs réguliers et plus sporadiques. Vous pouvez voir par exemple activité récente de commit sur github . Il est certainement beaucoup plus qu'un simple développeur!

Kivy semble essayer d'étendre la nature de l'application qui pourrait éventuellement être écrite en utilisant, comparer à QPython. Il y a des API comme plyer et pyjnius qui aident à étendre les possibilités. Peut-être de manière significative, par rapport à QPython.

je pense que QPython inclut pyjnius. Pas sûr à propos de plyer.

QPython et Kivy semblent tous deux être fortement en développement. Programme (script) se bloque (ou d'échec) semblent être signalés sur les deux outils.

Je ne suis pas sûr de ce que vous regardez, mais tout projet non-trivial aura des accidents/Échecs/bogues signalés. Je ne pense pas que kivy soit particulièrement instable.

globalement, l'avis en conséquence (des points ci-dessus) semble swing en faveur de Kivy, un peu plus.

j'aurais dit que qpython et kivy sont des choses très différentes. QPython vous permet d'écrire et d'exécuter des scripts, tandis que kivy est un framework graphique et les 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ù ils ne sont pas tous les deux appropriés - par exemple, je pense qpython est probablement beaucoup plus pratique pour faire rapide scripts sans gui pour par exemple simple automation (je pense que c'est possible), alors que je pense que kivy est un bien meilleur choix pour créer des applications autonomes avec GUI non trivial. Bien sûr, vous pouvez écrire le code kivy en qpython, comme discuté, mais ce n'est pas une grande expérience utilisateur pour quelque chose de non-trivial et vous avez besoin d'un ordinateur de bureau/Ordinateur Portable machine de toute façon pour faire un apk autonome.

14
répondu inclement 2015-01-17 15:59:07

il y a au moins deux autres façons (bien qu'à ma connaissance seulement théoriques) d'obtenir le code Python fonctionnant sur Android:

  • utiliser et convertir le bytecode Java en Dalvik, comme mentionné ailleurs . Malheureusement, toutes les bibliothèques CPython, par exemple numpy , ne sont pas disponibles pour jython , et si vous utilisez les bibliothèques Java, gardez à l'esprit que Android ne fournit pas les mêmes que par exemple Desktop JRE
  • utiliser , qui génère du code C++ à partir de votre code Python. Puis utilisez le .
3
répondu Tobias Kienzler 2017-05-23 11:46:10