2017-10-08 3 views
1

gelöstes Problem: einfach gebaut mit buildozer auf der Oracle Virtual MachineKivy App auf Android nur Lasten (3 Sekunden) und dann schließt sich

Ich mag würde über eine App Kivy-Python fragen. Die App ist in Windows, Python 3 mit kivy geschrieben und ist abhängig von numpy, und einige .png Datei.

Aufbau der apk-Datei:

Auf der virtuellen Maschine Linux-Terminal, habe ich den Projektordner gelegt, dass die Hauptdatei main.py, und führen Sie enthält:

buildozer android debug 

die Prozess durch diese Linie dauerte ziemlich lange. Die apk-Datei hat die Größe von 11MB. Nachdem ich das Telefon eingesteckt habe, lief ich (am VM Linux Terminal):

buildozer android deploy run 

Die App wurde auf dem Handy installiert.

Das Problem:

Aber wenn ich es öffnen: es sagt nur "Laden ..." neben dem Kivy Logo und dann schließt es sich.Was verursacht das?

Der Python, die ich in dem VM-Terminal sah python 2.7.13 ist, während mein Code in python 3 geschrieben wurde. Ist das das Problem? Wenn ja, was ist die Lösung?

Ich hoffe, dass Sie Feedback dazu bekommen. Vielen Dank.

LÖSUNG:

Die Lösung war, den Code neu zu schreiben, so dass es in python 2.7 funktioniert. Jetzt funktioniert der Code in Python2 und Python3. Dann baue ich die apk mit dieser bearbeiteten main.py. Jetzt stürzt es nicht ab.

+1

Sie müssen die Logcat von Ihrem Gerät zu sehen, was den Absturz verursacht, könnte es sein, dass Sie mit der Standard-Buildozer-Konfiguration verpackt, so dass Ihr Code von Python2 nicht ausgeführt wird Python3, oder es könnte etwas anderes sein, aber der einfachste Weg zu wissen ist, 'Buildozer android run logcat' zu verwenden, um den Fehler zu sehen, wenn der AP abstürzt – Tshirtman

+0

@Tshirtman danke Ich hatte die' logcat' ausgeführt, es ist ziemlich lang Reihe von Codes .. (und Es gibt keinen Fehler sichtbar), aber wenn ich mit Ctrl-C unterbrechen, sehe ich in den letzten Zeilen, dass es einige Python-Dateien <- aus dem Buildozer-Ordner <- aus dem Ordner von Python 2 läuft. Mein Code ist in Python 3 geschrieben. 'buildozer' kann python 3 noch nicht packen, ist es nicht ..? Eine Lösung könnte also sein, den Code neu zu schreiben, damit er in Python 2 kompatibel ist. – Arief

+1

Ein neues Problem sollte eine neue Frage sein, da die Lösung, die Sie gefunden haben, anderen in Zukunft helfen kann. (buildozer kann zu python3 btw verpacken, Sie müssen es nur fragen, und haben die crystax NDK installiert) – Tshirtman

Antwort

2

Sie können einen regulären Ausdruck fügen Sie einige logcat Ausgängen zum Filtern von uncommenting die „android.logcat_filters = *: S Python: D“ Linie in den buildozer.specs, (es ist nur bei der Anmeldung sehen Python über, aber Sie können fügen Sie einige Informationen hinzu, um mehr zu filtern.).

Auch ich ging durch ähnliche Probleme mit dieser Konfiguration (Python3 auf dem Computer und Python2 auf Android, und ja, Sie müssen Ihren Code "fast" beide kompatibel machen).
Dafür gibt es einige einfache Schritte zu erinnern (ich könnte einige vergessen):
Hinzufügen "@ Static-Methode" die Zeile vor Statik Methoden definiert sind
Fügen Sie eine leere "__init__.py“Datei auf Python Unterordner

Ich bezweifle es ist ein Problem mit numpy Rezept, aber es kann, so können Sie die Version, die Sie in buildozer.specs verwenden möchten hinzufügen oder reinigen Sie einfach die buildozer erneut zu testen.

Ich hoffe, dies hilft Ihnen, lassen Sie es mich wissen :)

+0

Danke. Ich habe den Post bearbeitet ... Das vorherige Problem wurde gelöst, indem der Code neu geschrieben wurde, der in Python2 funktioniert. Ich habe dieses 'logcat' für das neue Problem versucht, ich sehe keinen Fehler. – Arief

+0

Arf, nicht in der Lage zu reproduzieren, habe ich mit dem Standard-Buildozer Init versucht, Bild-Widget auf der KV-Datei (Bild im Stammverzeichnis des Projekts, neben main.py und main.kv, Quellzeile ist "source:" im. png ""). Können Sie Ihren Code senden, um zu testen, ob es sich um ein Codeproblem oder einen Computer/eine Installation handelt? (Natürlich, senden Sie uns nicht Ihren ganzen Code, desto weniger ist besser, bis es Ihr Problem enthält, arbeiten auf dem Desktop, aber nicht auf dem Handy) – MatEhickey

Verwandte Themen