We’ve just officially released python-for-android 0.4, and pushed it
to PyPI for the first time!
python-for-android is a
packaging tool for turning Python scripts and apps into Android
APKs. It was originally created for use with the Kivy graphical
framework, but now supports multiple kinds
of Python app ...
has just gained support for a new webview app interface, an
alternative to the existing SDL2 or Pygame backends. Under this mode
of operation the app gui consists entirely of a browser window
directed to open a webpage on localhost, and the Python backend can
then run any web ...
A natural question when people hear about Kivy as a way to create Android apps in Python
is…what can you do with it? Is it performant enough for games, can
you call the Android APIs, do all apps look the same? One of the best
resources for these kinds ...
It’s been a long time coming, but we can finally make the
announcement… python-for-android now supports Python 3 Android apps!
This naturally includes Kivy, but also should work for anything else
you can package with python-for-android, such as apps made with
PySDL2. Using Python 3 remains experimental for now ...
We’ve just released a new stable version of Kivy, version 1.9.1. You
can see the changelog on the mailing list announcement,
and download the new version from the Kivy website or via your package manager.
This is mainly a bugfix and tidying release following the major
I’ve recently been working on a significantly revamped version of
Kivy-project tools that take a Python
program and package it - along with any dependencies and the Python
interpreter itself - into an Android APK that can be run and
distributed just like a normal Android app. This rewrite ...
Some of the Kivy core developers were recently interviewed on
including discussion of how Kivy got started, the different things
it’s being used for, and the future of the project. Click the link to
listen to the podcast.
There are an increasing number of resources about different ways of
running Python on Android. Kivy (and its subprojects) are commonly
mentioned, as one of the most mature and popular ways to do so, but
one thing that gets less attention is the details of what you can do
Kivy 1.9 has just been released! This has been a long time in the
making, for no very good reason, but now you can take advantage of all
our many new features in the stable branch. You can find the full
changelog at the official mailing list announcement.
Kivy will be participating in the Google Summer of Code 2015
(GSOC), under the Python Software Foundation umbrella. Applications are
welcomed not just for the Kivy framework itself but on all the
projects managed by the Kivy organisation including
Python-for-Android, Kivy-iOS, PyJNIus, PyOBJus, Plyer and Buildozer.
As such, GSOC projects ...
I was recently reminded of the super cool Hy project. Hy is a lisp that
compiles to python’s own abstract syntax tree, so it works perfectly
with existing Python code (including with Cython etc.) but also
exposes all the power of lisp.
Continuing the theme of my last few posts, a common problem for new
kivy users is creating canvas instructions that follow their parent
widgets. For instance, here’s some code for a custom widget that tries
to draw a red rectangle in its upper-right corner - this is fairly
standard kivy ...
Another Kivy question that I often see (particularly recently for some
reason) is about using the Label widget - how to have text wrap
automatically, or the opposite, how to have the label automatically
grow to accommodate its text. I’ve covered this before in the 9th
Kivy crash course video ...
This time I cover the basics behind using a ScreenManager widget,
which can display one Screen at a time whilst making it easy to switch
to other screens including using fancy transitions. The ScreenManager
isn’t too hard, but it ...
One of the most common problems for new Kivy users is misunderstanding
how the bind method works, especially amongst newer Python users who
haven’t fully formed their intuition about function calls. For
instance, a user will write code like:
In this video I cover how to store your application settings in a
file, how to read them in when necessary, and how to have Kivy
semi-automatically construct a widget so the user can modify
settings in real ...
In this video I quickly cover 3 (related) ways to access Android’s
APIs straight from Python, making it easy to use hardware features
like the accelerometer as well as tasks like sending an email or
displaying a notification. It ...
I thought for a change I’d try for a shorter post on a single quick
subject, so I’m going to quickly explain a simple Kivy layout I
created, the SparseGridLayout. The post is standalone, but would go
well with ideas from my Kivy Crash Course, especially the recent ...
To anyone reading these write-ups of my Kivy Crash Course…shall I
keep going? I’ll keep writing up the individual videos if people are
finding them useful, but I’d also like to spend more time blogging
about other things (including other Kivy features rather than just
following the ...
This is the standalone write-up of my third Kivy Crash Course video,
linked above. In this entry, I head back to Python to add some more
complex and interesting behaviour to our simple program from the
In this writeup of my second Kivy Crash Course video, I describe how
to use the buildozer tool to
compile a Kivy application into a fully functional standalone Android
APK. For reference, you can find the original video here.
This particular article may have some overlap/redundancy ...
This is the first entry in my Kivy Crash Course, originally a series
of short (~10 minutes or less) youtube videos introducing how to
create an app using the kivy graphical framework, how to use different
Kivy features, and other topics like how to build for android ...