⚡ pureapk / pyapk
Pure Python Android APK Engine, Multi-Store Packager & Toolchain
Zero external dependencies, zero-copy memoryview parsing, 100% tests passing on CPython 3.8–3.16, Free-Threaded (No-GIL), and PyPy.
[ 🇬🇧 English ] | 🇷🇺 Документация на русском
🤝 Community, Issues & Support
- 🐛 Found a bug or malformed APK issue? Please Open an Issue — reports are tracked and resolved quickly!
- 💬 Questions, mobile packaging ideas, or store workflows? Join our GitHub Discussions.
- ⭐ Find pureapk useful? Give it a star on GitHub — it helps more Python mobile engineers discover the library!
- ☕ Support development (USDT TRC-20):
TDVbEdnpgNgoAhNcn1EwXxWHiR3RKLit5P(Verify on TronScan)
Quickstart • Compatibility • Python API • Kivy & Pygame • Store Publishing • CLI Reference
🧩 Universal Compatibility Matrix
pureapk requires zero external compiled C extensions and runs on the pure Python standard library. It is verified across 54 automated matrix environments with a 100% test pass rate:
| Runtime / Implementation | Supported Versions | Execution Mode | Matrix CI Status |
|---|---|---|---|
| CPython (Standard) | 3.8, 3.9, 3.10, 3.11, 3.12, 3.13, 3.14, 3.15, 3.16 (Alpha) | Standard Bytecode + GIL | ✅ 100% Passed (27/27) |
| CPython (Free-Threaded) | 3.13t, 3.14t, 3.15t, 3.16t (Alpha) | Multi-core No-GIL (PEP 703) | ✅ 100% Passed (12/12) |
| PyPy (JIT Accelerated) | pypy3.8, pypy3.9, pypy3.10, pypy3.11, pypy3.12 | Tracing JIT Runtime | ✅ 100% Passed (15/15) |
| Operating Systems | Windows (7, 8, 10, 11), Linux, macOS (Intel & Apple Silicon) | x86_64, ARM64 | ✅ 100% Passed |
🚀 Key Advantages
- 🛡️ Zero External Dependencies: Built entirely upon standard Python primitives (
struct,zipfile,hashlib,xml.etree). No JVM, no Android SDK/NDK, no bloated Gradle wrappers required on host. - ⚡ Zero-Copy & Low Memory: Uses
__slots__exclusively across all core classes (no dynamic__dict__overhead) andmemoryviewslicing. - 🎯 Branch-Free Functional Architecture: Implements clean functional programming patterns, dictionary dispatch tables, and iterator streams for predictable, hot-path execution.
- 🧵 Free-Threaded / No-GIL Safe: Designed for lock-free parallel parsing and thread-safe lazy property evaluation.
- 📱 First-Class Kivy & Pygame Toolchains: Direct project scaffolding, manifest generation, and 4-byte ZIP-aligned packaging.
- 🏬 Multi-Store Distribution: Built-in generators for Google Play (
.aabAndroid App Bundle), Apple App Store (.ipawithInfo.plist), and Microsoft Store (.msixwithAppxBlockMap.xml). - 🛠️ Dual CLI Entrypoints:
pureapkandpyapkcommands installed with human and--jsonoutputs.
📦 Installation
# Standard installation via PyPI
pip install pureapk
# Or install backwards-compatible alias
pip install pyapk
# With uv
uv add pureapk
Install Pre-Built Universal Wheel Directly from GitHub
pip install https://github.com/eminsk/pyapk/releases/download/v0.1.0/pureapk-0.1.0-py3-none-any.whl
💻 Python API Usage
1. Basic APK Inspection
from pureapk import APK
with APK("path/to/application.apk") as apk:
print("Package: ", apk.package_name)
print("Version Name: ", apk.version_name)
print("Version Code: ", apk.version_code)
print("Min SDK: ", apk.min_sdk_version)
print("Target SDK: ", apk.target_sdk_version)
print("Permissions: ", apk.permissions)
print("Activities: ", apk.activities)
print("Architectures:", apk.native_architectures)
2. Fast One-Liner Metadata Extraction
import pureapk
metadata = pureapk.inspect("application.apk")
print(metadata["package_name"], metadata["version_name"])
3. Multi-DEX & Dalvik Analysis
with APK("application.apk") as apk:
dex = apk.dex
print(f"Total DEX Files: {dex.dex_count}")
print(f"Total Classes: {dex.total_classes}")
print(f"Total Methods: {dex.total_methods}")
print(f"Total Fields: {dex.total_fields}")
print(f"Total Strings: {dex.total_strings}")
4. Signatures & Certificate Fingerprints
with APK("application.apk") as apk:
sig = apk.signature
print("Is Signed: ", sig.is_signed)
print("Schemes: ", sig.scheme_names) # e.g. ('v1', 'v2', 'v3')
for cert in sig.certificates:
print("Cert File: ", cert.filename)
print("SHA-256: ", cert.sha256)
print("SHA-1: ", cert.sha1)
print("MD5: ", cert.md5)
🎮 First-Class Kivy & Pygame Toolchains
Package Kivy and Pygame applications into Android APKs on any operating system (Windows 7/10/11, macOS, Linux) and any Python version without needing Linux VMs or 15 GB Android SDKs:
# Scaffold a new Kivy or Pygame mobile project
pureapk init-kivy my_kivy_app --title "Kivy Mobile App"
pureapk init-pygame my_pygame_app --title "Space Shooter"
# Package directly into APK (Debug or Store-Ready Release)
pureapk pack-kivy my_kivy_app -o app.apk --release
pureapk pack-pygame my_pygame_app -o shooter.apk --release
🏬 Multi-Store Publishing
pureapk supports production store releases across mobile and desktop app store accounts:
1. Google Play Console (.aab & Release Keystores)
Google Play requires Android App Bundles (.aab) and production signing:
# Generate production release signing profile
pureapk generate-keystore -o release.keystore --alias production
# Build Google Play Android App Bundle (.aab)
pureapk pack-aab my_app/ -o application.aab
2. Apple App Store (.ipa & Info.plist)
Scaffold and bundle iOS apps ready for Apple Transporter / App Store Connect:
# Scaffold iOS project with Info.plist
pureapk init-ios ios_project --title "MyIOSApp" --bundle-id "com.company.iosapp"
# Pack into Apple App Store .ipa archive
pureapk pack-ipa ios_project/ -o application.ipa --title "MyIOSApp"
3. Microsoft Windows Store (.msix & AppxBlockMap.xml)
Scaffold and package Windows Store apps with AppxManifest.xml and block maps:
# Scaffold Windows Store project
pureapk init-windows win_project --title "MyWinApp" --package "MyCompany.MyWinApp"
# Pack into Microsoft Store .msix package with 64KB block hashing
pureapk pack-msix win_project/ -o application.msix
🖥️ Command Line Interface (CLI)
Both pureapk and pyapk commands are installed.
# Metadata Summary
pureapk info application.apk
pureapk info application.apk --json
# Dump Decoded AndroidManifest.xml
pureapk manifest application.apk
pureapk manifest application.apk --json
# List Declared Permissions
pureapk permissions application.apk
# Inspect DEX Headers & Method Counts
pureapk dex application.apk
# List Archive Files with CRC32
pureapk files application.apk
# Verify Integrity & Signature
pureapk verify application.apk
# Extract APK Contents
pureapk extract application.apk -o output_dir/
# Pack Directory to APK with 4-byte alignment
pureapk pack src_directory/ -o output.apk
🧪 Testing
The test suite achieves 100% test pass rate across all Python implementations and operating systems:
# Run pytest with uv
uv run pytest tests/ -v
# Run with test coverage
uv run pytest --cov=pureapk tests/
📄 License
MIT License — Copyright (c) 2026 eminsk.
Metadata
Release files for pureapk 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| pureapk-0.1.0.tar.gz | 97.5 kB | Without provenance | Details for pureapk-0.1.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| pureapk-0.1.0-py3-none-any.whl | Python 3 | none | any | Details for pureapk-0.1.0-py3-none-any.whl |
Total release size: 131.1 kB
Release files / pureapk-0.1.0.tar.gz
| Download URL | pureapk-0.1.0.tar.gz |
|---|---|
| Size | 97.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
46af8c5572549a5e2e6421cf414cd395171f28146f8e116620786c3dbb289e4c
|
|
BLAKE2b-256 checksum How to use checksums |
cabd78a9b3ebbe2da24866b55a7a8b91d62f44ea6542ea856896d4bae5f42c79
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.13.7 {"installer":{"name":"uv","version":"0.13.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / pureapk-0.1.0-py3-none-any.whl
| Download URL | pureapk-0.1.0-py3-none-any.whl |
|---|---|
| Size | 33.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
867d0596095175f8a4df5618a97c19c24fb693ce4eebbbd124639b84d78b20ed
|
|
BLAKE2b-256 checksum How to use checksums |
4b483860f5e3ffc9cd52efb86e859eb2e16bf04ecdc6bbe5261b51f12a9f1069
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.13.7 {"installer":{"name":"uv","version":"0.13.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Security for pureapk 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.