Skip to content
Turn your Python application into an Android APK
Python Java C Makefile HTML CSS Other
Branch: develop
Clone or download

Latest commit

opacam 🔒 Bump twisted version to `20.3.0` (#2135)
Because of a detected vulnerability with prior versions of twisted:

**See also**: https://github.com/advisories/GHSA-h96w-mmrf-2h6v
Latest commit 47c9c33 Apr 8, 2020

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github Unify most of the test apps into `on device unit test app` (#2046) Mar 31, 2020
ci Unify most of the test apps into `on device unit test app` (#2046) Mar 31, 2020
doc Fixes code block directives Apr 2, 2020
pythonforandroid 🔒 Bump twisted version to `20.3.0` (#2135) Apr 8, 2020
testapps Unify most of the test apps into `on device unit test app` (#2046) Mar 31, 2020
tests Merge pull request #1867 from etc0de/make_debug_release_debuggable Apr 2, 2020
.coveragerc [coverage] Add coverage with `coveralls` 👖 Jun 3, 2019
.dockerignore Creates non root user in Dockerfile Oct 24, 2018
.env Travis CI revamp part 1, refs #2008 Oct 29, 2019
.gitignore Auto deploys to PyPI using Travis on tags Apr 1, 2020
.projectile Added .projectile Oct 4, 2015
.travis.yml Auto deploys to PyPI using Travis on tags Apr 1, 2020
Dockerfile.py3 Compression libraries - episode II: liblzma (#2096) Mar 24, 2020
LICENSE Update copyright year Aug 11, 2017
MANIFEST.in Deleted pygame build components May 26, 2019
Makefile Fix coveralls error on GitHub Actions Apr 3, 2020
README.md Merge master into develop (#2123) Apr 1, 2020
distribute.sh Made distribute.sh even more explicit Oct 4, 2015
setup.py virtualenv 20 breaks the osx build Feb 16, 2020
tox.ini 🔥 Drop Python 2 support (#2105) Mar 30, 2020

README.md

python-for-android

Build Status 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 along with your own code.

Features include:

  • 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:

Documentation

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:

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

For full instructions and parameter options, see the documentation.

Support

If you need assistance, you can ask for help on our mailing list:

We also have #support Discord channel.

Contributing

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.

License

python-for-android is released under the terms of the MIT License. Please refer to the LICENSE file.

History

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.

Contributors

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

Backers

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

Sponsors

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

You can’t perform that action at this time.