fdroidserver 2.0

fdroidserver is the core collection of tools for building apps, scanning them for issues or Anti-Features, collecting the resulting files into repos, and publishing them to the world. Today, a big update was released which has a large number of changes and updates that have been a long time coming. First, this release turns our 10 year old collection of tools and tricks for working with Android apps into more of a toolkit with an API, including a core set of functions declared with a stable interface. This allows for a wide range of new uses, like headless, automated repos or issuebot. It is now also possible to extend the command line interface using the new plugins. The app metadata files are now purely YAML, so they are an API in themselves, easily parsable and writeable by any standard YAML library. Also, the preferred format for the repo config file is now YAML (config.yml).

F-Droid is 10 years old, so this release also focused on modernizing. Software developed and used over 10 years inevitably builds up cruft and technical debt. We took this opportunity to remove lots of things that were broken, unused, or unmaintained. So there are some breaking changes, as detailed in the Changelog. We hope this all makes it a lot easier for new contributors to get involved and make valuable contributions, all while making things work better for existing contributors.

Last but not least, this is the first fdroidserver release that fully supports localization. 2.0 ships with བོད་སྐད་, Deutsch, English, español, français, magyar, italiano, 한국어, norsk bokmål, polski, português do Brasil, português europeu, русский, shqip, Türkçe, українська, 简体中文, and 繁體中文.


This changelog points to specific highlights and details. For a more complete overview, see the 2.0 milestone


  • fdroid update inserts donation links based on upstream’s FUNDING.yml (!754)
  • Stable, public API for most useful functions (!798)
  • Load with any YAML lib and use with the API, no more custom parser needed (!826) (!838)
  • config.yml for a safe, easy, standard configuration format (!663)
  • Config options can be set from environment variables using this syntax: keystorepass: {env: keystorepass} (!669)
  • Add SHA256 to filename of repo graphics (!669)
  • Support for srclibs metadata in YAML format (!700)
  • Check srclibs and app-metadata files with yamllint (!721)
  • Added plugin system for adding subcommands to fdroid (!709)
  • fdroid update, fdroid publish, and fdroid signindex now work with SmartCard HSMs, specifically the NitroKey HSM (!779) (!782)
  • fdroid update support for Triple-T Gradle Play Publisher v2.x (!683)
  • Translated into: bo de es fr hu it ko nb_NO pl pt pt_BR pt_PT ru sq tr uk zh_Hans zh_Hant


  • Smoother process for signing APKs with apksigner (!736) (!821)
  • apksigner is used by default on new repos
  • All parts except build and publish work without the Android SDK (!821)
  • Description: is now passed to clients unchanged, no HTML conversion (!828)
  • Lots of improvements for scanning for proprietary code and trackers (!748) (!844)
  • fdroid mirror now generates complete, working local mirror repos
  • fix build-logs dissapearing when deploying (!685)
  • do not crash when system encoding can not be retrieved (!671)
  • checkupdates: UpdateCheckIngore gets properly observed now (!659, !660)
  • keep yaml metadata when rewrite failed (!658)
  • import: template.yml now supports omitting values (!657)
  • build: deploying buildlogs with rsync (!651)
  • fdroid init generates PKCS12 keystores, drop Java < 8 support (!801)
  • Parse Version Codes specified in hex (!692)
  • Major refactoring on core parts of code to be more Pythonic (!756)
  • fdroid init now works when installed with pip


  • Removed all support for .txt and .json metadata (!772)
  • dropped support for Debian 8 jessie and 9 stretch
  • dropped support for Ubuntu releases older than bionic 18.04
  • dropped fdroid server update and fdroid server init, use fdroid deploy
  • fdroid dscanner was removed. (!711)
  • make_current_version_link is now off by default
  • Dropped force_build_tools config option (!797)
  • Dropped accepted_formats config option, there is only .yml now (!818)
  • Provides: was removed as a metadata field (!654)
  • Remove unused latestapps.dat (!794)