fdroid
Manage apps from the F-Droid repository
TLDR
Build a specific app
Build a specific app in a build server VM
Publish the app to the local repository
Install the app on every connected device
Check if the metadata is formatted correctly
Fix the formatting automatically (if possible)
SYNOPSIS
fdroid [global-options] command [command-options] [args]
PARAMETERS
--version
Show version and exit
--help
Show help message and exit
-c CONFIG_PATH, --config CONFIG_PATH
Path to config.yml file
-d LOG_DEVICE, --log-device LOG_DEVICE
Comma-separated list of log devices
--logcat-max
Maximum number of logcat lines to show
--nice PRIORITY
Priority for all build processes
--storage-url STORAGE_URL
Override repo storage URL
--verbose, -v
Verbose execution
--quiet, -q
Quiet execution
--color COLOR
Whether to use colours in output (auto, always, never)
--no-color
Do not use colours in output
DESCRIPTION
The fdroid command is the official command-line interface for the F-Droid project, an installable catalogue of Free and Open Source Software (FOSS) Android applications. Primarily aimed at repository maintainers and app developers, it handles metadata management, linting, building, signing, and publishing APKs to F-Droid repositories.
It automates complex tasks like verifying app metadata (yml files), running static analysis, building apps from source using Android SDK tools, and updating repository indexes. Users must initialize a repo with fdroid init, add apps via metadata, then use commands like lint, build, and update.
Key features include support for multiple build recipes, reproducible builds, automatic dependency resolution, and integration with Git repositories. It's Python-based, extensible via plugins, and ensures apps meet F-Droid's strict free software policies. Not intended for end-user app installation—that's handled by the F-Droid app or fdroidclient. Requires setup with Android SDK, Java, and Git.
CAVEATS
Requires Android SDK, JDK 11+, Git, and Python 3.7+. Complex setup for new repos; builds can take hours and need significant resources. Not for installing apps—use F-Droid client app. Potential issues with proprietary build tools or network-dependent builds.
COMMON SUBCOMMANDS
init: Initialize new repo.
lint: Lint all apps.
build: Build package.
update: Update repo metadata.
publish: Publish to repo.
install: Install APK.
SETUP REQUIREMENT
Run fdroid init first, configure config.yml with Android SDK paths, keys, and repo URL.
HISTORY
Developed since F-Droid's inception in 2010 by Ciaran Gultnieks. CLI tools evolved from early scripts; major versions align with F-Droid releases (e.g., fdroid 1.0 in 2016, 2.0+ with Python 3 migration). Actively maintained on GitLab with focus on reproducibility and security.


