2017-10-08 2 views
1

Problem solved:application Kivy sur les charges que Android (3 secondes), puis se ferme

Je voudrais demander une application Kivy-Python juste construit en utilisant buildozer sur la machine virtuelle Oracle. L'application est écrit en Windows, python 3 en utilisant kivy et dépend de numpy, et certains fichiers .png.

Construire le fichier apk:

Sur la machine virtuelle de terminal Linux, j'ai mis le dossier du projet qui contient le fichier principal main.py, puis exécutez:

buildozer android debug 

la processus par cette ligne a pris beaucoup de temps. Le fichier APK a la taille de 11MB. Après avoir branché le téléphone, j'ai couru (sur le terminal VM Linux):

buildozer android deploy run 

L'application a été installée sur le téléphone.

Le problème:

Mais quand je l'ouvre: il est dit que "Chargement en cours ..." à côté du logo Kivy puis elle se ferme.Qu'est-ce qui cause cela?

Le python que j'ai vu dans le terminal VM est python 2.7.13 alors que mon code a été écrit en python 3. Est-ce le problème? Si c'est le cas, qu'est-ce que est la solution?

Nous espérons recevoir des commentaires à ce sujet. Merci.

SOLUTION:

La solution a consisté à réécrire le code tel qu'il fonctionne dans python 2.7. Maintenant, le code fonctionne dans Python2 et Python3. Ensuite, je construis l'apk en utilisant ce main.py édité. Maintenant, il ne plante pas.

+1

vous devez obtenir le logcat de votre appareil pour voir ce qui cause le plantage, il se peut que vous emballé en utilisant la configuration de buildozer par défaut, de sorte que votre code est exécuté par python2 pas python3, ou c'est peut-être quelque chose d'autre, mais le moyen le plus facile de savoir est d'utiliser 'buildozer android run logcat' pour voir l'erreur quand l'ap se bloque – Tshirtman

+0

@Tshirtman merci J'ai lancé le' logcat', c'est assez long rangée de codes .. (et il n'y a pas d'ERREUR visible) mais quand j'interromps en utilisant ctrl-c, je vois dans les dernières lignes qu'il exécute des fichiers python <-dans le dossier buildozer <- du dossier de Python 2. Mon code est écrit en python 3. 'buildozer' ne peut pas empaqueter python 3 mais n'est-ce pas ..? Donc une solution peut être de réécrire le code pour qu'il soit compatible dans python 2. – Arief

+1

Un nouveau problème devrait être une nouvelle question, puisque la solution que vous avez trouvée au premier peut aider les autres à l'avenir. (buildozer peut empaqueter à python3 btw, vous avez juste besoin de le demander, et avoir le crystax NDK installé) – Tshirtman

Répondre

2

Vous pouvez ajouter un regex pour filtrer les sorties de certains LogCat décommenter les « android.logcat_filters = *: python S: D » ligne dans les buildozer.specs, (il est regarder juste au journal en ce qui concerne python, mais vous pouvez ajoutez quelques informations pour filtrer plus.).

Aussi je suis allé à travers des problèmes similaires avec cette configuration (python3 sur l'ordinateur, et python2 sur android, et oui, vous devez rendre votre code "presque" à la fois compatible).
Pour cela, il y a quelques étapes faciles à retenir (j'en oublierai peut-être):
Ajouter "@ static-method" la ligne avant que les méthodes statiques soient définies
Ajouter un "__init__ vide".py » fichier sur les sous-dossiers de python

Je doute que ce soit un problème avec la recette numpy, mais il peut, donc vous pouvez ajouter la version que vous souhaitez utiliser dans buildozer.specs, ou tout simplement nettoyer le buildozer pour tester à nouveau.

J'espère que cela vous aidera, faites le moi savoir :)

+0

Merci. J'ai édité le post ... Le problème précédent est résolu, en réécrivant le code qui fonctionne dans Python2. J'ai essayé ce 'logcat' pour le nouveau problème, je ne vois aucune erreur. – Arief

+0

Arf, pas capable de reproduire, j'ai essayé avec le buildozer init par défaut, widget Image sur le fichier kv (image sur le répertoire racine du projet, à côté de main.py et main.kv, la ligne source est "source:" im. png ""). Pouvez-vous envoyer votre code pour tester s'il s'agit d'un problème de code ou d'un problème d'ordinateur/d'installation? (bien sûr, ne nous envoyez pas tout votre code, le moins est le meilleur, jusqu'à ce qu'il contienne votre problème, travaillez sur le bureau, mais pas sur le mobile) – MatEhickey