F-Droid
概述
Bitwarden F-Droid 存储库托管在 GitHub 上。它包含所有在 F-Droid 上可用的 Bitwarden App。
Bitwarden F-Droid 存储库会定期自动更新,以确保存储库中托管的 App 与 Google Play Store 发布的最新版本保持同步。
设置
Go
构建和运行 metascoop
应用程序需要 Go 语言。
使用 Homebrew 下载和安装 Go 的命令如下:
其他下载和安装选项请参阅 Go 安装文档。
F-Droid 服务器和存储库工具
要手动更新 F-Droid 存储库,需要使用 F-Droid 服务器和存储库工具。安装说明请参阅官方 F-Droid 服务器和存储库工具文档。
安卓 SDK
F-Droid 服务器和存储库工具需要 apksigner
,它是安卓 SDK 的一部分。
要使用 Homebrew 安装所需的安卓 SDK 工具,请运行以下命令:
可以在此处找到下载和安装所需 Android SDK 工具的替代说明。
文件结构
该存储库的结构如下:
fdroid/
:存放应用程序的 F-Droid 存储库。metascoop/
:用于在 Bitwarden App 发布新版本时更新 F-Droid 存储库的 Go App。repos.yml
:定义源存储库和可托管 F-Droid App 的文件。
repos.yml
repos.yml
此文件包含有关 MetasCoop
将搜索新的 F-Droid 版本的源存储库的详细信息。它使用以下结构来声明存储库及其应用程序:
my-repository
:存储库的名称。用于在索引中识别存储库。git
:源存储库的 URL。applications
:存储库中可用的应用程序。可以通过向applications
列表中添加新条目来向存储库添加多个应用程序。filename
:将要从源存储库下载的 APK 文件的名称。id
:应用程序 ID。这必须是唯一的,用于在 F-Droid 存储库中识别应用程序。name
:在 F-Droid 中查看应用程序时显示给用户的名称。categories
:应用程序所属的分类。用于在 F-Droid 中对应用程序进行分类。description
:在 F-Droid 中查看应用程序时显示给用户的描述。
metascoop/
metascoop/
Bitwarden 的 F-Droid 存储库配置为在源仓库中检测到新版本时自动更新应用程序,这些源存储库在 repos.yml
中定义。
这通过使用 metascoop
应用程序来获取源存储库的最新版本,然后更新存储库索引来完成。
metascoop
应用程序由 CI/CD 管道定期运行,以确保存储库索引保持最新。
当检测到源存储库中的更改时,任何新的发布都将添加到 F-Droid 存储库中,并执行 fdroid update
命令以更新 F-Droid 服务器和存储库元数据。CI/CD 管道将自动创建一个拉取请求以更新存储库中的这些更改。
fdroid/
fdroid/
此目录中的大多数文件由 metascoop
App 和 fdroid
工具生成。一些文件无法自动生成,必须手动编辑。
F-Droid 存储库配置
F-Droid 存储库配置在 config.yml
文件中。这包括名称、描述和存档设置等详细信息。出于安全考虑,此文件不会被跟踪。
存储库图标
F-Droid 存储库图标存储在 fdroid/icon.png
中。
应用程序图片
一些应用程序元数据,如应用程序图标、功能图形和截图,未在 repos.yml
文件中定义,必须放置在 F-Droid 存储库的正确位置。
以下目录结构用于存储应用程序图像:
fdroid/repo/<app-id>/<locale>/icon.png
:应用程序图标。fdroid/repo/<app-id>/<locale>/feature-graphic.png
:功能图形。各种设备的截图。例如
fdroid/repo/com.x8bit.bitwarden/en-US/phoneScreenshots/login-screenshot.png
。
元数据文件结构详细信息请参阅官方 F-Droid 文档。
测试
本地测试
运行 run_metascoop.sh
和 update_repo.sh
脚本可以手动检查新发布并更新 F-Droid 存储库。这在进行测试时特别有帮助。
当在本地执行 run_metascoop.sh
时,需要存储库密钥库,因为 fdroid update
作为过程的一部分被执行。
可以通过在 fdroid
目录下运行 fdroid init
命令并按照提示操作来生成一个临时密钥库。这将生成具有默认值的 config.yml
和 keystore.p12
文件。
运行以下命令以生成新的密钥库和配置:
请勿推送由本地生成的密钥库或配置签名的更改。
使用本地生成的密钥库或配置将强制重新生成所有元数据和重新签名仓库。这些更改仅应用于本地测试。
可以运行本地 F-Droid 服务器进行端到端测试。此类测试需要将您的计算机设置为 Web 服务器,并将整个存储库复制到 Web 根目录中。有关设置本地演示存储库的说明,请参阅官方 F-Droid 文档。
对于 macOS 用户
如果使用 nginx 作为 Web 服务器,并且使用 Homebrew 安装,Web 根目录位于 /opt/homebrew/var/www/
。
要启动/停止 nginx,请运行:
默认情况下,从 homebrew 启动时,nginx 将监听端口 8080
。从模拟器进入时,本地服务器 URL 的示例应如下所示: http://10.0.2.2:8080/fdroid/repo
远程测试
可以从 GitHub Actions 标签页触发 fdroid.yml
工作流。勾选「Dry run」复选框可以在不发布更改的情况下运行工作流。默认情况下,工作流会将更改发布到 F-Droid 存储库。
安全
F-Droid 存储库使用 Bitwarden 拥有的证书进行签名。用户可将签名与 README.md
文件中提供的指纹进行比较,以验证存储库的有效性。
最后更新于