Fork 0
Turn your Python application into an Android APK
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gruve-p 61cc596be2
Bump groestlcoin_hash to 1.0.3 (#2607)
6 months ago
.github Our self-hosted Apple Silicon runner now has been migrated to actions/runner v2.292.0 which now supports arm64 natively (#2602) 6 months ago
ci Handle all the macOS prerequisites (except NDK/SDK) via prerequisites.py (#2594) 7 months ago
doc NDK 23 + Gradle 7 support (#2550) 8 months ago
pythonforandroid Bump groestlcoin_hash to 1.0.3 (#2607) 6 months ago
testapps Add service to webview test app 7 months ago
tests Introduces pkg_config_location in Prerequisite and use OpenSSLPrerequisite().pkg_config_location in hostpython3, so we can support ssl on hostpython3 just out of the box also on macOS (#2599) 7 months ago
.coveragerc Move coveralls to github actions (#2490) 1 year ago
.deepsource.toml Fix some code quality and bug-risk issues 3 years ago
.dockerignore Creates non root user in Dockerfile 4 years ago
.env Drop travis-ci.org and use github-actions for pypi release (#2487) 1 year ago
.gitignore Auto deploys to PyPI using Travis on tags 3 years ago
.projectile Added .projectile 7 years ago
CHANGELOG.md Update CHANGELOG.md & change version for release 2022.03.13 9 months ago
Dockerfile Avoids build error for opencv and bumps version to 4.5.1 (#2419) 1 year ago
LICENSE Update copyright year 5 years ago
MANIFEST.in Add *.diff to manifest and package_data 1 year ago
Makefile Support multiarch in webview bootstrap (#2596) 7 months ago
README.md Fix broken Contribute link (#2505) 1 year ago
distribute.sh Made distribute.sh even more explicit 7 years ago
setup.py AAB support related changes (#2467) 1 year ago
tox.ini Handle all the macOS prerequisites (except NDK/SDK) via prerequisites.py (#2594) 7 months ago



Unit tests & build apps Coverage Status Backers on Open Collective Sponsors on Open Collective

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 or AAB along with your own code.

Features include:

  • 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.
  • AAB: Android App Bundle support.

For documentation and support, see:


Follow the quickstart instructions to install and begin creating APKs and AABs.

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:

p4a --version

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

If you need to deploy your app on Google Play, Android App Bundle (aab) is required since 1 August 2021:

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 easier-to-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 were changed. The new recipe for python3 (3.7.1) had a new build system which was applied to the ancient python recipe, allowing us to bump the python2 version number to 2.7.15. This change unified the build process for both python recipes, and probably solved various issues detected over the years. These unified python recipes require a minimum target api level of 21, Android 5.0 - Lollipop. If you need to build targeting an api level below 21, you should use an older version of python-for-android (<=0.7.1).

On March of 2020 we dropped support for creating apps that use Python 2. The latest python-for-android release that supported building Python 2 was version 2019.10.6.

On August of 2021, we added support for Android App Bundle (aab). As a collateral, now We support multi-arch apk.


This project exists thanks to all the people who contribute. [Contribute].


Thank you to all our backers! 🙏 [Become a backer]


Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [Become a sponsor]