python-for-android is a packaging tool for Python apps on Android. You can create your own Python distribution including the modules and dependencies you want, and bundle it in an APK along with your own code.
- Support for building with both Python 2 and Python 3.
- Different app backends including Kivy, PySDL2, and a WebView with Python webserver.
- Automatic support for most pure Python modules, and built in support for many others, including popular dependencies such as numpy and sqlalchemy.
- Multiple architecture targets, for APKs optimised on any given device.
For documentation and support, see:
- Website: http://python-for-android.readthedocs.io
- Mailing list: https://groups.google.com/forum/#!forum/kivy-users or https://groups.google.com/forum/#!forum/python-android.
Follow the quickstart instructions to install and begin creating APKs.
Quick instructions: install python-for-android with:
pip install python-for-android
(for the develop branch:
pip install git+https://github.com/kivy/python-for-android.git)
Test that the install works with:
To build any actual apps, set up the Android SDK and NDK as described in the quickstart. Use the SDK/NDK API level & NDK version as in the quickstart, other API levels may not work.
With everything installed, build an APK with SDL2 with e.g.:
p4a apk --requirements=kivy --private /home/username/devel/planewave_frozen/ --package=net.inclem.planewavessdl2 --name="planewavessdl2" --version=0.5 --bootstrap=sdl2
For full instructions and parameter options, see the documentation.
If you need assistance, you can ask for help on our mailing list:
We also have #support Discord channel.
We love pull requests and discussing novel ideas. Check out the Kivy project contribution guide and feel free to improve python-for-android.
See our documentation for more information about the python-for-android development and release model, but don't worry about the details. You just need to make a pull request, we'll take care of the rest.
The following mailing list and IRC channel are used exclusively for discussions about developing the Kivy framework and its sister projects:
We also have #dev Discord channel.
python-for-android is released under the terms of the MIT License. Please refer to the LICENSE file.
In 2015 these tools were rewritten to provide a new, easier to use and extend interface. If you'd like to browse the old toolchain, its status is recorded for posterity at at https://github.com/kivy/python-for-android/tree/old_toolchain.
In the last quarter of 2018 the python recipes has been changed, the new recipe for python3 (3.7.1) has a new build system which has been applied to the ancient python recipe, allowing us to bump the python2 version number to 2.7.15. This change, unifies the build process for both python recipes, and probably solve some issues detected over the years. Also should be mentioned that this unified python recipes require to target to a minimum api level of 21, Android 5.0 - Lollipop, so in case the you need to build targeting an api level below 21, you must use an old version of python-for-android (<=0.7.1). All this work has been done using android ndk version r17c, and your build should success with that version...but be aware that the project is in constant development so...the ndk version will change at some time.
Those mentioned changes has been done this way to make easier the transition between python3 and python2. We will slowly phase out python2 support towards 2020...so...if you are using python2 in your projects you should consider to migrate it into python3.
This project exists thanks to all the people who contribute. [Contribute].
Thank you to all our backers!
Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [Become a sponsor]