Build native packages for Android
Project description
Build native packages for Android.
## Requirements
- Python;
- Android SDK;
The Android SDK can be installed from [Android Studio][].
Then set the environment variable [ANDROID_SDK_ROOT][] or ANDROID_HOME.
Finally, Python's [distutils][] package must be patched for cross-compiling.
The patch is in the patches directory. Apply it like so:
DESTLIB=$(python -c "import sysconfig; \
print(sysconfig.get_config_var('DESTLIB'))")
patch -p2 -d $DESTLIB < patches/patch-Python-3.10.0.txt
This patch should apply to any version of Python.
You may need to use sudo.
[Android Studio]: https://developer.android.com/studio/
[ANDROID_SDK_ROOT]: https://developer.android.com/studio/command-line/variables
[distutils]: https://docs.python.org/3/library/distutils.html
## Install androidenv
Install from the Python Package Index:
pip install androidenv
You can also copy the file androidenv.py to where you need it,
it is self contained.
## Usage
Build something from source:
cd thing
python -m androidenv setup.py build
python -m androidenv setup.py install
You really want to do this in a [virtual environment][venv].
[venv]: https://docs.python.org/3/library/venv.html
Use the --find-library option to find libraries like libandroid or liblog:
python -m androidenv --find-library android log
## Environment variables
This module works entirely with environment variables.
Input environment variables:
- ANDROID_SDK_ROOT or ANDROID_HOME (required);
- ABI (optional; armeabi-v7a or arm64-v8a);
- API (optional);
- DEBUG (optional; 0 or 1);
What is being built must respect the following evironment variables:
- AR
- AS
- CC
- CFLAGS
- CPP
- CPPFLAGS
- CXX
- CXXFLAGS
- LD
- LDFLAGS
- PATH
- RANLIB
- READELF
- STRIP
Many packages do, many don't. Python itself (distutils) does not respect
RANLIB; CMake does not respect CPPFLAGS; and many more. Fixing that is
your homework.
### setup.cfg
Some useful configuration options when building for Android:
[build]
build-base = build
build-temp = build/tmp
build-lib = build/lib
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
androidenv-1.0.tar.gz
(5.8 kB
view details)
File details
Details for the file androidenv-1.0.tar.gz.
File metadata
- Download URL: androidenv-1.0.tar.gz
- Upload date:
- Size: 5.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.9.23
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e7a9677031f181f789f543a4cca61586684b52ee85bcd286ef8a2e271d95c620
|
|
| MD5 |
42c74b67f668c16e1cd0fb9046b4111c
|
|
| BLAKE2b-256 |
4fc869533b74b74e5dda4d09d05803e353f6b3f73ef4c8b4d8ca76edb9c47ef2
|