I'm not sure what's the situation with kivy nowdays, but when I tested it last time for mobile (few years ago) I was taken away with the initial loading time... When you run a kivy app you see a loader with kivy logo and it lasts too long to consider your app snappy enough. Once the app actually starts, it runs OK.
Desktop performance was better, including loading times, due to direct utilization of OpenGL.
I've been looking into mobile development with Python several times over the years but it doesn't look like it's going anywhere – the community seems very small and the possibilities are… very finite.
It's kinda sad – Python could have been a great language for mobile platforms – easy to learn, expressive and concise, with a fantastic community and ecosystem behind it – but for some reason mobile platforms have been completely neglected by the Python community so far.
Why is that? And what could be done to change this?
The two main obstacles I see:
1) Native-looking UIs and bindings for platform libraries
2) Performance
With enough effort, though, I do think both of these could be solved.
How would 2) be dealt with? Python is handicapped to a much more meaningful degree than current mobile options, e.g. while Kotlin isn't as fast as Swift (and Swift's syntax is a strange PITA), Python is much slower than both, the only boon being the larger community surrounding it + legibility. OTOH, with the performance headroom on current devices, I suppose the performance loss matters less. Then again, Electron applications seem to inspire frustration across the spectrum with PC's and Macs.
As for 1): I agree.
As a tangentially-related rant, I do wish more resources were spent providing UI kits and easy integration of API's to third-party developers. IIRC Google still doesn't provide the same high-quality UI resources as Apple does, which is partially to blame for an app quality disparity moreso than disparate user bases.
Jython exists, and is in the same performance ballpark as CPython.
Python does so much highly dynamic stuff that even writing a good JIT compiler for it is hard, OTOH these exist. On top of all, it has GIL. I suppose the plain bytecode interpreters are as fast as possible.
The thing is, it's probably very unrewarding work in very hostile environments (maybe Android is slightly friendlier but I can't imagine iOS is a nice platform to port your ecosystem to). So it looks a ton like something you'd mainly do if you were paid to do it.
Kivy as a touch based UI library is very nice and the cross capability is awesome.
Actually building production artifacts with buildozer is painful. Last time (admittedly 2 years ago) I did it I had to trick it into using a newer NDK because the play store required it but buildozer wasn't up to date enough to recognize the new NDK. Getting it to sign an apk was undocumented and required finding the right magical mailing list response.
But I can't put all the blame on buildozer. They seem like they're actually trying to abstract away all the pain of building native apps for android.
Desktop performance was better, including loading times, due to direct utilization of OpenGL.