为了使 F-Droid 值得信赖,我们需要透明。让人们可以轻易关注我们使用的所有流程和系统帮助我们保持安全。这些是关于发布流程的关键信息的 API。
活跃包
通过 https://f-droid.org/api/v1/packages可访问一个每应用 API, 它可用来查询主存储库中应用的信息。JSON
API 目前列出了已发布和建议的版本。存档的应用和包在此 API 中不可用。
Note: This API is intended for use in the pure display of information, e.g. showing badges. It is not intended to be used for fetching or verifying apps. For any use cases that have potential security concerns, we recommend using the signed index files and verifying the signature based on the pinned repo signer before using that information for signing.
示例请求:
GET https://f-droid.org/api/v1/packages/org.fdroid.fdroid HTTP/1.1
示例响应:
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
"packageName": "org.fdroid.fdroid",
"suggestedVersionCode": 1009000,
"packages": [
{
"versionName": "1.10-alpha0",
"versionCode": 1010000
},
{
"versionName": "1.9",
"versionCode": 1009000
}
]
}
shields.io 已经使用这个 API 来提供 F-Droid 徽章,像这样。
存储库索引
F-Droid 是围绕所有可用的应用和软件包的签名索引构建的。 这是一个 JSON 文件,尽管它更像是一个索引而不是一个 API,因为所有信息都通过一个文件分发。
- https://f-droid.org/repo/index-v2.json
- https://f-droid.org/repo/index-v1.json
- https://f-droid.org/archive/index-v2.json
- https://f-droid.org/archive/index-v1.json
从 index-v2 开始,支持仅包含更改的文件,称为差异(“diff”)文件。 还有一个单独的入口点,由 JAR 和 GPG 签名签署,并列出可用的索引和差异文件。
- https://f-droid.org/repo/entry.jar
- https://f-droid.org/repo/entry.json
- https://f-droid.org/repo/entry.json.asc
v1 仓库索引以签名的 JAR 文件的形式出现,该文件包含 index-v1.json。 最好的方法是验证 JAR 签名,然后提取
index-v1.json ,如果验证通过的话。 fdroidserver Python 库提供
fdroidserver.download_repo_index() 使这很容易完成。
还有用于验证下列 JSON 文件的 GPG 签名:
- https://f-droid.org/repo/index-v2.json.asc
- https://f-droid.org/repo/index-v1.json.asc
- https://f-droid.org/archive/index-v2.json.asc
- https://f-droid.org/archive/index-v1.json.asc
签署者索引
这是一份简单的索引文件,列出了 f-droid.org 用来签署每个包的每一个 签署者 的 SHA-256 指纹。这是确定任意给定 APK 的官方f-droid.org签署者真实性的来源。为了知晓给定 APK 是否由f-droid.org签署,请检查签署者索引:
https://f-droid.org/repo/signer-index.json
也通过 entry.json 上的签名,或直接的 JAR 文件以及 GPG 签名来签署它。
应用搜索 API
我们有了一个基础的 web API 用来执行对 f-droid 存储库的全文搜索。
应用构建元数据
f-droid.org 中的每个应用在
fdroiddata 中
有一个相应的构建元数据文件 。
为了鼓励更多有创意的重用,
我们将数据以标准格式存储在易于获取的地方。
全部应用集合以 YAML 格式存储。
文件可以通过 Application ID 使用 GitLab Raw URL
https://gitlab.com/fdroid/fdroiddata/-/raw/master/metadata/<ApplicationID>.yml
(例如 https://gitlab.com/fdroid/fdroiddata/-/raw/master/metadata/org.fdroid.fdroid.yml)直接访问。
存储库索引和
GitLab 仓库文件
API
可以用于请求可用的 Application ID。这些文件也可以通过 GitHub 上的镜像获取,例如 https://raw.githubusercontent.com/f-droid/fdroiddata/master/metadata/org.fdroid.fdroid.yml
f-droid.org 构建服务器状态
构建循环的四个主要步骤为:checkupdates,build,update 和 deploy。每个步骤有一个包含状态信息的 JSON 文件。步骤运行完成后此文件将立即发布。当前运行的步骤发布在_running_。
- https://f-droid.org/repo/status/running.json
- https://f-droid.org/repo/status/build.json
- https://f-droid.org/repo/status/update.json
- https://f-droid.org/repo/status/deploy.json
使用这些 JSON API 的例子可以参见 F-Droid Monitor 网站和 F-Droid Build Status 应用。
镜像和存储库监视器
mirror-monitor 和 repo-monitor 分别是检查 f-droid.org 镜像和第三方存储库状态的自动化任务。它们提供了一个单一大文件 JSON 日志记录了所有运行的检查:
- f-droid.org 镜像状态:https://fdroid.gitlab.io/mirror-monitor/report.json
- 第三方存储库状态:https://fdroid.gitlab.io/repo-monitor/report.json
官方镜像列表位于每个索引文件中。也可以通过 GitLab 原始 URL:https://gitlab.com/fdroid/fdroiddata/-/raw/master/config/mirrors.yml 直接获取它
可重复构建
verification.f-droid.org 是一个重构器,它从 f-droid.org 重新构建官方发行版, 然后检查它们是否可重复构建。每个包都有一个基于包名的入口点: https://verification.f-droid.org/org.fdroid.fdroid.json
然后,每个已检查的 APK 都有一个 JSON 文件,
其中的文件名格式为 <ApplicationId>_<VersionCode>.apk.json,示例:
https://verification.f-droid.org/org.fdroid.fdroid_1010050.apk.json
还有一个所有成功验证过的 APK 的清单:https://verification.f-droid.org/verified.json
二进制透明度日志
二进制透明度指所有发布的包应当应当如它们发布的原样记录。这提供了检查给出的二进制文件是否由发布者制作,或来自其他地方,如漏洞。fdroidserver 拥有作为发布过程的一部分管理二进制透明度日志的内建工具。它已经在 f-droid.org 上启用: https://gitlab.com/fdroid/f-droid.org-transparency-log
因为 Gradle 和 Google Android Tools team 没有发布一个,F-Droid 做了。基本 API 是一个 JSON 文件包含包含已发布 URL 的列表。每个 URL 包含一个日志过程得到的 SHA-256 校验和列表。也有其他被跟踪的文件,取决于发布者提供什么。
- https://gitlab.com/fdroid/gradle-transparency-log/-/raw/master/checksums.json
- https://gitlab.com/fdroid/android-sdk-transparency-log/-/raw/master/checksums.json
issuebot
issuebot 在应用合并请求和打包请求 (RFP) 上运行以对评审者提供关于应用的信息。大部分这些信息也以 JSON 格式提供。每个报告由来自在特定应用上运行的模块的数据组成。有两个入口点:
- https://fdroid.gitlab.io/rfp/issuebot/applicationIds.json
- https://fdroid.gitlab.io/rfp/issuebot/sourceUrls.json
指标
使用数据从多个 F-Droid 网站生成并发布,不包含个人识别信息 (PII)。每周发布一个 JSON 文件,每个网站发布一个 JSON 索引文件。例如,这是一周的搜索指标:https://fdroid.gitlab.io/metrics/search.f-droid.org/2021-01-18.json
尽管并非真正的 API,但一些镜像确实提供一些统计数据:
在尝试从这些数据生成 metrics 之前,了解它们是什么很重要。 F-Droid 不跟踪用户,因此当前不可能精确报告有多少人在使用它。不过可以进行预测并在数据中找到某些趋势。 把这些数据扔进标准的 web metrics 系统会给你漂亮的图片,但这些结果离事实很远。考虑到隐私,有不少数据缺失,其余则相当不稳定。
Git 统计数据
每个 git 存储库有很多令人感兴趣的元数据。GitStats 项目从这些数据中生成漂亮的图表。这不算一个 API,但它相关因为它使用公开项目数据。可从此处访问每个中心化 git 存储库的预生成页面:https://fdroid.gitlab.io/。
