fdroidserver 工具链:开发者准备应用分发的完整命令行工具集
fdroidserver 是什么
fdroidserver 是 F-Droid 项目提供的命令行工具集,用于准备、构建、发布开源 Android 应用。它是 F-Droid 生态的核心支柱——F-Droid 官方构建服务器用它编译所有应用,开发者也用它在本地测试构建。
简单说:fdroidserver 就是「把你的应用变成 F-Droid 仓库里一个应用」的全套工具。
核心功能
| 命令 | 作用 |
|---|---|
fdroid import | 从源码仓库导入应用,自动生成元数据 YAML |
fdroid build | 从源码编译生成 APK |
fdroid publish | 签名发布到本地仓库 |
fdroid update | 更新仓库索引 |
fdroid lint | 检查元数据和构建配方 |
fdroid server update | 推送到远程仓库服务器 |
fdroid checkupdates | 检查是否有新版本 |
安装 fdroidserver
方式一:pip 安装(推荐)
pip install fdroidserver
需要 Python 3 运行环境。还需要安装 Android SDK 和 Java JDK(用于实际构建)。
方式二:Docker(推荐给不想折腾环境的人)
docker run -it -v $(pwd):/repo registry.gitlab.com/fdroid/fdroidserver:latest bash
官方提供了预配置好的 Docker 镜像,里面已经包含了 Android SDK、Gradle、所有依赖。在容器里直接跑 fdroidserver 命令。
方式三:从源码安装
git clone https://gitlab.com/fdroid/fdroidserver.git
cd fdroidserver
pip install -e .
使用 fdroidserver 的流程
第一步:准备环境
确保有:
- Android SDK(设置环境变量
ANDROID_HOME) - JDK 17+(Gradle 构建需要)
- Python 3 和 pip
第二步:创建仓库目录
mkdir my-repo && cd my-repo
fdroid init
fdroid init 会生成:
config.yml— 仓库配置metadata/— 元数据目录repo/— 构建输出目录archive/— 旧版本归档目录
第三步:导入应用
fdroid import --url https://github.com/example/myapp
这会:
- 克隆你的应用源码
- 自动检测构建系统(Gradle / Maven / Apache Ant)
- 生成初始的元数据 YAML 文件到
metadata/myapp.yml - 提示你调整元数据
第四步:编辑元数据
编辑 metadata/myapp.yml,填写完整信息:
Categories:
- Tools
License: GPL-3.0-only
WebSite: https://example.com/myapp
SourceCode: https://github.com/example/myapp
IssueTracker: https://github.com/example/myapp/issues
AutoName: My App
RepoType: git
Repo: https://github.com/example/myapp.git
Builds:
- versionName: '1.0'
versionCode: 1
commit: v1.0
gradle:
- yes
output: app/build/outputs/apk/release/app-release.apk
AutoUpdateMode: Version
UpdateCheckMode: Tags
CurrentVersion: '1.0'
CurrentVersionCode: 1
第五步:本地构建测试
fdroid build myapp
这会:
- 克隆指定的 commit
- 在隔离的构建环境中编译
- 检查是否成功
- 如果失败,显示错误日志
第六步:发布到本地仓库
fdroid publish myapp
fdroid update
APK 会被签名并发布到 repo/ 目录,索引文件会更新。然后你可以把这个目录放到任何 Web 服务器上,就能作为一个 F-Droid 兼容仓库了。
fdroidserver 和 F-Droid 官方构建的关系
F-Droid 官方构建服务器运行的就是 同一份 fdroidserver:
- 官方维护者把元数据合并进 fdroiddata 仓库
- 构建服务器拉取 fdroiddata
- 用 fdroidserver 批量构建所有应用
- 签名、生成索引、发布到 f-droid.org/repo
所以你在本地成功构建 = F-Droid 官方构建也大概率会成功。本地构建失败 = 官方构建一定失败。这就是为什么本地构建测试是提交应用到 F-Droid 的必要前置步骤。
fdroidserver 版本
- 最新稳定版从 PyPI 安装
- 开发版在 GitLab fdroid/fdroidserver 仓库
- 稳定版 API 可能变化频繁,留意 release notes