LinuxCommandLibrary

fdroid

Manage apps from the F-Droid repository

TLDR

Build a specific app

$ fdroid build [app_id]
copy

Build a specific app in a build server VM
$ fdroid build [app_id] --server
copy

Publish the app to the local repository
$ fdroid publish [app_id]
copy

Install the app on every connected device
$ fdroid install [app_id]
copy

Check if the metadata is formatted correctly
$ fdroid lint --format [app_id]
copy

Fix the formatting automatically (if possible)
$ fdroid rewritemeta [app_id]
copy

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.

SEE ALSO

git(1), python3(1), java(1), aapt(1)

Copied to clipboard