Python-for-Android (P4A) backend for Briefcase
Project description
Briefcase P4A Backend
Python-for-Android (P4A) backend for Briefcase - Build Android APKs using python-for-android directly within Briefcase's build pipeline.
Features
- Direct P4A Integration: Uses python-for-android without Gradle or Buildozer
- Briefcase SDK Integration: Uses Briefcase's Android SDK management system
- Python 3.13 Compatibility: Automatically patches pyjnius 1.6.1 for Python 3.13+ compatibility
- Framework Agnostic: Works with Kivy, console apps, and other Python frameworks
Installation
pip install briefcase-p4a-backend
Usage
- Create a new Briefcase project:
briefcase new -t https://github.com/pyCino/briefcase-p4a-template.git --template-branch main
# Choose any GUI framework when prompted
- Configure for P4A backend in
pyproject.toml:
[tool.briefcase.app.yourapp.android]
build_backend = "briefcase_p4a_backend"
- Build your Android APK:
briefcase create android p4a
briefcase build android p4a
How It Works
The P4A backend integrates with Briefcase's existing Android toolchain:
- Briefcase Integration: Registers as
android.p4aformat in Briefcase - Template System: Uses cookiecutter templates for project structure
- SDK Management: Leverages Briefcase's Android SDK manager for tools
- Python 3.13 Support: Automatically applies compatibility patches to pyjnius 1.6.1 when using Python 3.13+
- APK Generation: Runs python-for-android with appropriate arguments and handles APK output
Requirements
- Python 3.8+
- Briefcase 0.3.23+
- Linux (tested on Ubuntu 25.04+)
Configuration Options
Basic Configuration
[tool.briefcase.app.yourapp.android]
# Required: Use P4A backend
build_backend = "briefcase_p4a_backend"
Advanced Options
[tool.briefcase.app.yourapp.android]
build_backend = "briefcase_p4a_backend"
# Target architectures (defaults to armeabi-v7a, arm64-v8a)
android_archs = ["arm64-v8a"]
# API levels
android_sdk_version = "33"
android_min_sdk_version = "21"
# Custom Android activity (optional)
android_activity = "org.kivy.android.PythonActivity"
Python 3.13 Compatibility
For Python 3.13+, this backend automatically:
- Uses local pyjnius recipe with compatibility patches applied to stable version 1.6.1
- Patches are based on official pyjnius GitHub commit for Python 3.13
longtype fixes - No manual intervention required - patches apply automatically when needed
Troubleshooting
Common Issues
"APK not found after build" The backend searches multiple locations for the generated APK. Check build logs for details.
Debug Commands
# Verbose build
briefcase build android p4a -v
# Clean build
briefcase build android p4a --clean
Supported frameworks
- Kivy: Full support with kivy>=2.3.1
- Other Frameworks: Any Python framework compatible with python-for-android
Development
# Clone and install
git clone https://github.com/pyCino/briefcase-p4a-backend.git
cd briefcase-p4a-backend
pip install -e .
# Test with sample app
briefcase new # Create test project
# Add build_backend = "briefcase_p4a_backend" to pyproject.toml
briefcase create android p4a
briefcase build android p4a
Related Projects
- Briefcase - Cross-platform Python app packaging
- Python-for-Android - Android build system
- Kivy - Cross-platform GUI framework
License
MIT License - see LICENSE file for details.
Al pyCino - Simplifying Android development with Python
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file briefcase_p4a_backend-1.0.0.post1.tar.gz.
File metadata
- Download URL: briefcase_p4a_backend-1.0.0.post1.tar.gz
- Upload date:
- Size: 14.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
880a5bae48f6b38b3b17fe1fcbef3c0ebf21c1a12bfb1074f409b206ca7292d7
|
|
| MD5 |
95f17f0dbdf583f19544f3333c21f234
|
|
| BLAKE2b-256 |
27cd7cb4c3d862d59d3c1b6fa6ff6f1baf3eb09921cbdce66308419d63732016
|
File details
Details for the file briefcase_p4a_backend-1.0.0.post1-py3-none-any.whl.
File metadata
- Download URL: briefcase_p4a_backend-1.0.0.post1-py3-none-any.whl
- Upload date:
- Size: 13.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
25bfce3cbacb35917b8d5e95a6374678dd015c4451b63dd22e3884ddf45a5c96
|
|
| MD5 |
748e33e25d7cca4172c16c8efb87f00c
|
|
| BLAKE2b-256 |
eebf31833423b820f56408db21b23c5291e5ed8d6e8990411fe0d13341f8949b
|