BuilDroid
⚡ Clone, build, and generate debugging APKs for Android projects using LLM-powered automation.
BuilDroid is a Python package that leverages Large Language Models (LLMs) to automatically clone any Android project hosted on GitHub, configure it, and build the debugging .apk file. This enables faster evaluation, performance testing, reverse engineering, or security analysis of Android applications. The building process happens in an isolated Docker container.
🚀 Features
- 🔗 Clone any Android GitHub repository.
- ⚙️ Auto-configure Gradle build for debugging.
- 🤖 LLM-guided build troubleshooting and error recovery.
- 📦 Outputs ready-to-install debugging APK.
- 🧪 Supports workflows for performance evaluation and static/dynamic analysis.
📦 Installation
pip install buildroid
📦 Dev Container Setup
To setup in a VSCode Dev Container:
- Install the Dev Containers extension.
- Clone this repository.
- Open the repository in VSCode, and it will prompt you to reopen in the dev container. Alternatively, use a command to open the current folder in a dev container.
✅ Requirements
- Python 3.10+
- Git installed and accessible from terminal
- OpenAI API key (or other LLM provider) for LLM access.
⚙️ LLM Configuration
builDroid uses an LLM backend for build assistance. To use it:
- Obtain your API key from OpenAI or compatible provider.
- Set your API key as a .env file:
API_KEY=<your-api-key-here>
BASE_URL=<your-base-url-here>
LLM_MODEL=<your-llm-model-here>
BASE_URL and LLM_MODEL are optional. If not provided, builDroid will use OpenAI's gpt-4.1-mini-2025-04-14.
For example, if you put 'https://generativelanguage.googleapis.com/v1beta/' as your base url, builDroid will access Google AI's gemini-2.0-flash-lite.
If you want to use other providers, you have to provide the base url and the LLM model in .env.
- (Optional) builDroid's primary goal is to successfully execute
./gradlew assembleDebug. To change its goals, create aai_settings.yamlfile in the working directory. The example file is in the source code.
🖥️ Usage
CLI Usage
buildroid build https://github.com/user/project # Run on a single repository
buildroid build repos.txt # Run on a list of repositories from a file
buildroid build local_path --local # Run with a local repository
buildroid clean # Clean test results
Advanced Options for Builds
-n,--num: Specify cycle limit (max. number of commands to execute)-c,--conv: Enable conversation mode (API works with conversation models)-k,--keep-container: Keep container after build (builDroid removes container by default)-l,--local: Build from a local repository (Provide local path instead of Github link)
Python Usage
import builDroid
source = "https://github.com/user/project"
builDroid.process_repository(repo_source=source)
# args:
# repo_source: str,
# cycle_limit: int = 40,
# conversation: bool = False,
# extract_project: bool = True,
# override_project: bool = False,
# keep_container: bool = False,
# user_retry: bool = False,
# local_path: bool = False,
# project_name: str = None
builDroid.utils.api_token_reset() # This function will reset the environment variables
🛠️ Troubleshooting
If the build fails, builDroid will attempt to:
- Analyze the error output.
- Query the LLM for common solutions.
- Retry the build with suggested fixes.
❗ Note: Some complex/outdated builds may still require manual intervention.
🏗️ Roadmap
- Integration with emulator for automated APK testing
🤝 Contributing
Pull requests are welcome! For major changes, please open an issue first to discuss.
📜 License
MIT License. See LICENSE for details.
🙏 Acknowledgments
- OpenAI for LLM API
- ExecutionAgent
Metadata
Release files for buildroid 1.3.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| buildroid-1.3.4.tar.gz | 108.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| buildroid-1.3.4-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 225.2 kB
Release files / buildroid-1.3.4.tar.gz
| Download URL | buildroid-1.3.4.tar.gz |
|---|---|
| Size | 108.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
cd37a2bd6753e46ee44e501b119e11fee864cf55fcbadeae37bf855f344dcfba
|
|
BLAKE2b-256 checksum How to use checksums |
9562625d302f9dec1e2b363fa10559ec99e07b2c130d6d026033017004fa5cff
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.10.10
|
Release files / buildroid-1.3.4-py3-none-any.whl
| Download URL | buildroid-1.3.4-py3-none-any.whl |
|---|---|
| Size | 116.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0c3abb40a15ed5921f85e9d5267d4ae56466e1da579b4ae8d175df049d3fbaa3
|
|
BLAKE2b-256 checksum How to use checksums |
88ca6e9da2f78eb9091597bff582900a9954032870b45715d1675add1a5b45b9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.10.10
|