An update on Python-for-android: v2019.06.06 released and future plans
inclem.netI really like Python... it is fun to program with and has a decent library for just about anything you can imagine.
However, I would really like a Flutter like UI experience for Python. More concretely, Python would rule the world if it had a modern cross platform framework upon which to build graphical interfaces for all the devices we see today. From iOS to Android to RasPi to Google Home to anything with a screen.
Kivy and the Beeware project are just too janky to really accomplish anything. No offense intended to the creators or maintainers. The complexity to get anything out there is just too much.
I have been looking at Flutter/Dart and React/JS to fill this gap. Also, thinking about possibly learning Swift. My logic, Python seems like it is going down the ML rabbit hole with no signs of abatement... I don't know what that means for long term adoption.
If Swift, Dart, Kotlin and JS can tap into the same ML pipelines, I don't see the benefit of Python in the long run. I mean a Pandas library for anyone of the languages mentioned above would be a game changer for ML adoption in that language, imo.
Did you check the gallery of apps done with kivy, on android or else? Much can be accomplished, i promise you. https://kivy.org/#gallery
here are a few of the apps i personally developped fully with kivy https://vimeo.com/297757037 https://vimeo.com/257492885 https://vimeo.com/206290310 https://vimeo.com/144659031 https://www.youtube.com/watch?v=Umls6ytXasU https://www.youtube.com/watch?v=2EF5W-d2eVI
python can do so much more than ML, reducing it to that is short sighted.
The problem is that the Android SDK is a Rube Goldberg machine full of layers of over engineered complexity. It does not work well with anything other than Kotlin, Java, and to a much lesser extent C++. Even other JVM languages have a hard time working properly on Android.
It's only for Web apps so far, but can I interest you in an online development environment with drag'n'drop UI, Python in the browser and on the server, full autocomplete, and a bunch of other creature comforts unavailable in the modern Web stack? It's called Anvil (https://anvil.works), and we built it very much for this kind of use case.
Mobile apps written in Python might be too slow though.
Too slow for what? How slow do you think python is? unless your application is cpu-bound (which it probably isn't), python is fast enough for basically anything you might want to do these days, and if it is, you can use cython to optimize the parts that needs to be fast, as kivy does.
While a lot can be done in kivy, I foolishly decided to try it out with absolutely no primer on java, android or native development in general.
It was ok, everything felt like it had to be hacked together, and for some reason the only working version I could get stuff to compile in was like android SDK 19 and ndk 14b I think? (you literally had to thread the needle with your envs) At the time I don't know if they actually had a working buildozer env for 64-bit ARM.(could be wrong on that) Compiling took forever, especially the first time, which 99% of the time I couldn't get any 64-bit version of anything to compile so nothing was cached. I'd change one config wait 10 minutes come back not ideal.
Again I was probably super naive in my approach, but overall it felt very constraining and not the java is a peach but I was much more comfortable learning java (from scratch) and android than wading through kivy.
I appreciate the developers contributions, and I'm probably at fault, but I'm just saying its worth noting it wasn't any easier getting an app running if you know just python with kivy. I've also come to realize gradle and android are just a huge bloated mess in general lol.
As a side note cross compiling packages in go for use on android does work really good for stuff like daemons.