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.24

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.24
File Size Uploaded
goygram-0.8.24.tar.gz 277.7 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for goygram 0.8.24
File
goygram-0.8.24-cp38-abi3-win_arm64.whl CPython 3.8 abi3 Windows ARM64 Details
goygram-0.8.24-cp38-abi3-win_amd64.whl CPython 3.8 abi3 Windows x86-64 Details
goygram-0.8.24-cp38-abi3-musllinux_1_2_x86_64.whl CPython 3.8 abi3 Linux musl 1.2+ x86-64 Details
goygram-0.8.24-cp38-abi3-musllinux_1_2_aarch64.whl CPython 3.8 abi3 Linux musl 1.2+ ARM64 Details
goygram-0.8.24-cp38-abi3-manylinux_2_34_x86_64.whl CPython 3.8 abi3 Linux glibc 2.34+ x86-64 Details
goygram-0.8.24-cp38-abi3-manylinux_2_28_aarch64.whl CPython 3.8 abi3 Linux glibc 2.28+ ARM64 Details
goygram-0.8.24-cp38-abi3-macosx_11_0_arm64.whl CPython 3.8 abi3 macOS 11.0+ ARM64 Details
goygram-0.8.24-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.24-cp38-abi3-android_24_x86_64.whl CPython 3.8 abi3 Android API level 24+ x86-64 Details
goygram-0.8.24-cp38-abi3-android_24_arm64_v8a.whl CPython 3.8 abi3 Android API level 24+ ARM64 v8a Details

Total release size: 6.5 MB

Release files / goygram-0.8.24.tar.gz

Download URL goygram-0.8.24.tar.gz
Size 277.7 kB
Tags Source
SHA-256 checksum
How to use checksums
c17610ddcf7624715f23940de826b1fa054db946b6a89dcc50389df4f04f01b2
BLAKE2b-256 checksum
How to use checksums
db562e360af9a7b8dd85a71379b18f98157aa58f6c2a0c3270fd13b78feb98f3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

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

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

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

Download URL goygram-0.8.24-cp38-abi3-win_amd64.whl
Size 497.4 kB
Tags CPython 3.8 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
9456a46615ed340a1b45257d600130ca45a54318f4dba21c1c14b0f23f3febc6
BLAKE2b-256 checksum
How to use checksums
705919f4aef845a146869b55701163f6058d41e5d862daf063d946d16585139b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

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

Download URL goygram-0.8.24-cp38-abi3-musllinux_1_2_x86_64.whl
Size 792.5 kB
Tags CPython 3.8 Linux musl 1.2+ x86-64 abi3
SHA-256 checksum
How to use checksums
03c97d3500aa9c3ce8672c747506eeb81ea849a298b1991eac1662cab74dc543
BLAKE2b-256 checksum
How to use checksums
520100afdf767c2bcdfc9ce913be343e482251a602ceca956258b353d79b9035
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

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

Download URL goygram-0.8.24-cp38-abi3-musllinux_1_2_aarch64.whl
Size 744.6 kB
Tags CPython 3.8 Linux musl 1.2+ ARM64 abi3
SHA-256 checksum
How to use checksums
9b5a7f63487d0b99c3c50ec100378848a5834303634d4ede0d327710d2a789e5
BLAKE2b-256 checksum
How to use checksums
81df7af132200bb39b978c34b983b3ea821202b478714031067fb6e993d5faa3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

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

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

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

Download URL goygram-0.8.24-cp38-abi3-manylinux_2_28_aarch64.whl
Size 565.7 kB
Tags CPython 3.8 Linux glibc 2.28+ ARM64 abi3
SHA-256 checksum
How to use checksums
91736dc18803f856d63fc86134f7c22bf0b65514a3307f43a3c16b30d64b1084
BLAKE2b-256 checksum
How to use checksums
d10b5ce1afeaaffae1b2b66ebf7ae2b157e26710059f6af1ca576992d25164b4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

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

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

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

Download URL goygram-0.8.24-cp38-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Size 835.8 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
46b97a3ef0b66cdf70aecc05e28153b251c5f35c40cd16691ad49e266528a6bd
BLAKE2b-256 checksum
How to use checksums
3ef3fbb4204e676d30fc441cd9cbd3de3ce513c7c1baa02aa3a443f9ccda1bec
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

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

Download URL goygram-0.8.24-cp38-abi3-android_24_x86_64.whl
Size 591.5 kB
Tags Android API level 24+ x86-64 CPython 3.8 abi3
SHA-256 checksum
How to use checksums
80070449d62834ac86555397b049327e74b93f1ee8cab050ef889af134709ef2
BLAKE2b-256 checksum
How to use checksums
7c03a623a3e91dfc9fd2e1e3ea965df66654098efa4267c77d8433dbb841dcc8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

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

Download URL goygram-0.8.24-cp38-abi3-android_24_arm64_v8a.whl
Size 575.3 kB
Tags Android API level 24+ ARM64 v8a CPython 3.8 abi3
SHA-256 checksum
How to use checksums
5000925ab17a7b86bea4f0fdc6d96b2f9816cd97d434fa34503fc446210b830d
BLAKE2b-256 checksum
How to use checksums
0a79ed5545a3d9a5a9271f899172ed0fa9f73ddd7ec13484210e4a3bee80b841
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.24 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