Skip to main content

Python for Android

If you obtained this README as part of a release package, then the only applicable sections are "Prerequisites", "Testing", and "Using in your own app".

If you obtained this README as part of the CPython source tree, then you can also follow the other sections to compile Python for Android yourself.

However, most app developers should not need to do any of these things manually. Instead, use one of the tools listed here, which will provide a much easier experience.

Prerequisites

If you already have an Android SDK installed, export the ANDROID_HOME environment variable to point at its location. Otherwise, here's how to install it:

  • Download the "Command line tools" from https://developer.android.com/studio.
  • Create a directory android-sdk/cmdline-tools, and unzip the command line tools package into it.
  • Rename android-sdk/cmdline-tools/cmdline-tools to android-sdk/cmdline-tools/latest.
  • export ANDROID_HOME=/path/to/android-sdk

The android.py script will automatically use the SDK's sdkmanager to install any packages it needs.

The script also requires the following commands to be on the PATH:

  • curl
  • java (or set the JAVA_HOME environment variable)

Building

Python can be built for Android on any POSIX platform supported by the Android development tools, which currently means Linux or macOS.

First we'll make a "build" Python (for your development machine), then use it to help produce a "host" Python for Android. So make sure you have all the usual tools and libraries needed to build Python for your development machine.

The easiest way to do a build is to use the android.py script. You can either have it perform the entire build process from start to finish in one step, or you can do it in discrete steps that mirror running configure and make for each of the two builds of Python you end up producing.

The discrete steps for building via android.py are:

./android.py configure-build
./android.py make-build
./android.py configure-host HOST
./android.py make-host HOST

HOST identifies which architecture to build. To see the possible values, run ./android.py configure-host --help.

To do all steps in a single command, run:

./android.py build HOST

In the end you should have a build Python in cross-build/build, and a host Python in cross-build/HOST.

You can use -- as a separator for any of the configure-related commands – including build itself – to pass arguments to the underlying configure call. For example, if you want a pydebug build that also caches the results from configure, you can do:

./android.py build HOST -- -C --with-pydebug

Packaging

After building an architecture as described in the section above, you can package it for release with this command:

./android.py package HOST

HOST is defined in the section above.

This will generate a tarball in cross-build/HOST/dist, whose structure is similar to the Android directory of the CPython source tree.

Testing

The Python test suite can be run on Linux, macOS, or Windows.

On Linux, the emulator needs access to the KVM virtualization interface. This may require adding your user to a group, or changing your udev rules. On GitHub Actions, the test script will do this automatically using the commands shown here.

The test suite can usually be run on a device with 2 GB of RAM, but this is borderline, so you may need to increase it to 4 GB. As of Android Studio Koala, 2 GB is the default for all emulators, although the user interface may indicate otherwise. Locate the emulator's directory under ~/.android/avd, and find hw.ramSize in both config.ini and hardware-qemu.ini. Either set these manually to the same value, or use the Android Studio Device Manager, which will update both files.

You can run the test suite either:

  • Within the CPython repository, after doing a build as described above. On Windows, you won't be able to do the build on the same machine, so you'll have to copy the cross-build/HOST/prefix directory from somewhere else.

  • Or by taking a release package built using the package command, extracting it wherever you want, and using its own copy of android.py.

The test script supports the following modes:

  • In --connected mode, it runs on a device or emulator you have already connected to the build machine. List the available devices with $ANDROID_HOME/platform-tools/adb devices -l, then pass a device ID to the script like this:

    ./android.py test --connected emulator-5554
    
  • In --managed mode, it uses a temporary headless emulator defined in the managedDevices section of testbed/app/build.gradle.kts. This mode is slower, but more reproducible.

    We currently define two devices: minVersion and maxVersion, corresponding to our minimum and maximum supported Android versions. For example:

    ./android.py test --managed maxVersion
    

By default, the only messages the script will show are Python's own stdout and stderr. Add the -v option to also show Gradle output, and non-Python logcat messages.

Any other arguments on the android.py test command line will be passed through to python -m test – use -- to separate them from android.py's own options. See the Python Developer's Guide for common options – most of them will work on Android, except for those that involve subprocesses, such as -j.

Every time you run android.py test, changes in pure-Python files in the repository's Lib directory will be picked up immediately. Changes in C files, and architecture-specific files such as sysconfigdata, will not take effect until you re-run android.py make-host or build.

The testbed app can also be used to test third-party packages. For more details, run android.py test --help, paying attention to the options --site-packages, --cwd, -c and -m.

Using in your own app

See https://docs.python.org/3/using/android.html.

Metadata

Release files for goygram 0.8.23

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for goygram 0.8.23
File Size Uploaded
goygram-0.8.23.tar.gz 131.0 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for goygram 0.8.23
File
goygram-0.8.23-cp38-abi3-win_arm64.whl CPython 3.8 abi3 Windows ARM64 Details
goygram-0.8.23-cp38-abi3-win_amd64.whl CPython 3.8 abi3 Windows x86-64 Details
goygram-0.8.23-cp38-abi3-musllinux_1_2_x86_64.whl CPython 3.8 abi3 Linux musl 1.2+ x86-64 Details
goygram-0.8.23-cp38-abi3-musllinux_1_2_aarch64.whl CPython 3.8 abi3 Linux musl 1.2+ ARM64 Details
goygram-0.8.23-cp38-abi3-manylinux_2_34_x86_64.whl CPython 3.8 abi3 Linux glibc 2.34+ x86-64 Details
goygram-0.8.23-cp38-abi3-manylinux_2_28_aarch64.whl CPython 3.8 abi3 Linux glibc 2.28+ ARM64 Details
goygram-0.8.23-cp38-abi3-macosx_11_0_arm64.whl CPython 3.8 abi3 macOS 11.0+ ARM64 Details
goygram-0.8.23-cp38-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl CPython 3.8 abi3 macOS 11.0+ ARM64, macOS 10.12+ x86-64, macOS 10.12+ universal2 (ARM64, x86-64) Details
goygram-0.8.23-cp38-abi3-android_24_x86_64.whl CPython 3.8 abi3 Android API level 24+ x86-64 Details
goygram-0.8.23-cp38-abi3-android_24_arm64_v8a.whl CPython 3.8 abi3 Android API level 24+ ARM64 v8a Details

Total release size: 4.9 MB

Release files / goygram-0.8.23.tar.gz

Download URL goygram-0.8.23.tar.gz
Size 131.0 kB
Tags Source
SHA-256 checksum
How to use checksums
7cee1caae51ae7c0b0c07fb4d1d1b88bf4f670923f94c8a603618e0a68d03037
BLAKE2b-256 checksum
How to use checksums
5ea3f92edc5afc25e31773944a7642ba4c7f0ed06fdc11147149c4a1a96cec41
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / goygram-0.8.23-cp38-abi3-win_arm64.whl

Download URL goygram-0.8.23-cp38-abi3-win_arm64.whl
Size 338.0 kB
Tags CPython 3.8 Windows ARM64 abi3
SHA-256 checksum
How to use checksums
ad02e978bcd53b6b02dc86b14761a8825a14ddfe12675cb9ebb886dee3b47c37
BLAKE2b-256 checksum
How to use checksums
af14fb34c515bbb081e9874056bd98a82a36949995dcfc90071d2a0e52a48f48
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / goygram-0.8.23-cp38-abi3-win_amd64.whl

Download URL goygram-0.8.23-cp38-abi3-win_amd64.whl
Size 350.7 kB
Tags CPython 3.8 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
3f364a9b304761f9e537393d83b4a7989af21a4b1fce58e132d6bc78800223ed
BLAKE2b-256 checksum
How to use checksums
582f12dc88ef3dd337fa65d628e61d66b424248496e73c29d5a69d3842327b78
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / goygram-0.8.23-cp38-abi3-musllinux_1_2_x86_64.whl

Download URL goygram-0.8.23-cp38-abi3-musllinux_1_2_x86_64.whl
Size 646.7 kB
Tags CPython 3.8 Linux musl 1.2+ x86-64 abi3
SHA-256 checksum
How to use checksums
393b4335b2c76a7dc078e4bcca3b332af4fdb5e9c0228351000304181e7dd537
BLAKE2b-256 checksum
How to use checksums
2c92ab98348a3ca6d60154f5c9a26011ca9ed6e5f567e138b652f2489287e481
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / goygram-0.8.23-cp38-abi3-musllinux_1_2_aarch64.whl

Download URL goygram-0.8.23-cp38-abi3-musllinux_1_2_aarch64.whl
Size 598.8 kB
Tags CPython 3.8 Linux musl 1.2+ ARM64 abi3
SHA-256 checksum
How to use checksums
84e8ec6a391e9c297b4dc464b42b4c56f64c58898d666325f90aa131015b092f
BLAKE2b-256 checksum
How to use checksums
33ff664f5f864143b68e8bc100a0f8868b37ee00b1f6c1a039ee82413d48a160
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / goygram-0.8.23-cp38-abi3-manylinux_2_34_x86_64.whl

Download URL goygram-0.8.23-cp38-abi3-manylinux_2_34_x86_64.whl
Size 434.6 kB
Tags CPython 3.8 Linux glibc 2.34+ x86-64 abi3
SHA-256 checksum
How to use checksums
0236662273ae450e392db3dd1d0a77ed9a6af7c5d51ce41660a4001621015dd1
BLAKE2b-256 checksum
How to use checksums
5837bfd78056f98f2e73115b92489a044511f83576790ed6bfebd40776592e95
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / goygram-0.8.23-cp38-abi3-manylinux_2_28_aarch64.whl

Download URL goygram-0.8.23-cp38-abi3-manylinux_2_28_aarch64.whl
Size 419.9 kB
Tags CPython 3.8 Linux glibc 2.28+ ARM64 abi3
SHA-256 checksum
How to use checksums
021a45c9a7d95aaf4164362064579387ec3f2a9d86508ab351bb5a815797ae52
BLAKE2b-256 checksum
How to use checksums
1200e9c292cc2b6aa6dc5bc3b14349046b9b8e82073b0769b95cce8fef58218f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / goygram-0.8.23-cp38-abi3-macosx_11_0_arm64.whl

Download URL goygram-0.8.23-cp38-abi3-macosx_11_0_arm64.whl
Size 406.9 kB
Tags CPython 3.8 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
cd7c4f61285f5c0034a84fe2c1cae0ace3816baef180be8a9695286c1bce5905
BLAKE2b-256 checksum
How to use checksums
1ddfe006dbe30009038ac08eec7c53896010402b4b76962011f72a96515491e6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / goygram-0.8.23-cp38-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl

Download URL goygram-0.8.23-cp38-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Size 690.0 kB
Tags CPython 3.8 abi3 macOS 10.12+ universal2 (ARM64, x86-64) macOS 10.12+ x86-64 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
1c5c030022ce3fbc85a9aa9c0259aecb92e77bca9e23685624c66ed132ac6f06
BLAKE2b-256 checksum
How to use checksums
03ab189fc79725f1cd815d7dc100bf6ec57c82bc24b0d17f5e8f728bb6e59654
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / goygram-0.8.23-cp38-abi3-android_24_x86_64.whl

Download URL goygram-0.8.23-cp38-abi3-android_24_x86_64.whl
Size 445.7 kB
Tags Android API level 24+ x86-64 CPython 3.8 abi3
SHA-256 checksum
How to use checksums
3cbb6338d57482df545d42e75c903a535dc94e0e2564c3600984c4f01c0d44e8
BLAKE2b-256 checksum
How to use checksums
48c523ecef919618fe8786a127f04e1c0c723e83c7e655ce80f454f0d1364e76
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / goygram-0.8.23-cp38-abi3-android_24_arm64_v8a.whl

Download URL goygram-0.8.23-cp38-abi3-android_24_arm64_v8a.whl
Size 429.5 kB
Tags Android API level 24+ ARM64 v8a CPython 3.8 abi3
SHA-256 checksum
How to use checksums
966970397855eb34fa7d7981497bf435873023bbcc96caea194fda71133169c8
BLAKE2b-256 checksum
How to use checksums
2decd5e7be6a352dbf29a11f47b5619de052f6d7d51504aec7c0ce7ae2c966e9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release history Release notifications | RSS feed

This release

0.8.23 This release

11 release files

0.8.14

4 release files

0.8.13

4 release files

0.8.12

4 release files

0.8.11

4 release files

0.8.10

4 release files

0.8.9

4 release files

0.8.8

4 release files

0.8.7

4 release files

0.8.6

4 release files

0.8.5

4 release files

0.8.4

4 release files

0.8.3

4 release files

0.8.2

4 release files

0.8.1

4 release files

0.8.0

4 release files

0.7.99

4 release files

0.7.98

4 release files

0.7.97

4 release files

0.7.96

4 release files

0.7.95

4 release files

0.7.94

4 release files

0.7.93

4 release files

0.7.92

4 release files

0.7.91

4 release files

0.7.90

4 release files

0.7.89

4 release files

0.7.88

4 release files

0.7.87

4 release files

0.7.86

4 release files

0.7.85

4 release files

0.7.84

4 release files

0.7.82

4 release files

0.7.81

4 release files

0.7.80

4 release files

0.7.79

4 release files

0.7.78

4 release files

0.7.77

4 release files

0.7.76

4 release files

0.7.75

4 release files

0.7.63

4 release files

0.7.62

4 release files

0.7.61

4 release files

0.7.60

4 release files

0.7.59

4 release files

0.7.58

4 release files

0.7.57

4 release files

0.7.56

4 release files

0.7.55

4 release files

0.7.54

4 release files

0.7.53

4 release files

0.7.52

4 release files

0.7.51

4 release files

0.7.50

4 release files

0.7.49

4 release files

0.7.48

4 release files

0.7.47

4 release files

0.7.46

4 release files

0.7.45

4 release files

0.7.35

4 release files

0.7.34

4 release files

0.7.33

4 release files

0.7.32

4 release files

0.7.31

4 release files

0.7.30

4 release files

0.7.29

4 release files

0.7.28

4 release files

0.7.27

4 release files

0.7.26

4 release files

0.7.25

4 release files

0.7.24

4 release files

0.7.23

4 release files

0.7.22

4 release files

0.7.21

4 release files

0.7.20

4 release files

0.7.19

4 release files

0.7.18

4 release files

0.7.17

4 release files

0.7.16

4 release files

0.7.15

4 release files

0.7.14

4 release files

0.7.13

4 release files

0.7.9

4 release files

0.7.8

4 release files

0.7.7

4 release files

0.7.6

4 release files

0.7.5

4 release files

0.7.4

4 release files

0.7.3

4 release files

0.7.2

4 release files

0.7.1

4 release files

0.7.0

4 release files

0.6.9

4 release files

0.6.8

4 release files

0.6.7

4 release files

0.6.6

4 release files

0.6.5

4 release files

0.6.4

4 release files

0.6.3

4 release files

0.6.2

4 release files

0.6.1

4 release files

0.6.0

4 release files

0.5.7

4 release files

0.5.6

4 release files

0.5.5

4 release files

0.5.3

4 release files

0.5.1

4 release files

0.5.0

4 release files

0.4.9

4 release files

0.4.8

4 release files

0.4.7

4 release files

0.4.2

4 release files

0.4.1

4 release files

0.4.0

4 release files

0.3.9

4 release files

0.3.8

4 release files

0.3.7

4 release files

0.3.6

4 release files

0.3.5

4 release files

0.3.4

4 release files

0.3.2

4 release files

0.3.0

4 release files

0.1.0

4 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page