F-Droid 上的应用可以为应用商店提供内容,使其”关于”页面更有趣、信息更丰富。
从 F-Droid 0.103 版本和 fdroidserver 0.8 版本开始支持。
最新标签页政策
在 F-Droid 客户端中,从 1.6 版本开始,只有具备以下所有条件的应用才会显示在“最新”标签页上:
- 名称
- 图标
- 概要
- 描述
- 许可
- 至少一个版本的更新内容条目
- 至少一张图片(屏幕截图或一张功能演示图片)
- 以上的至少一个已被翻译
在公告文章中了解更多信息。
数据格式
图片文件格式
图片可以用 PNG 或 JPEG 格式提供。图片必须以 png、jpg 或 jpeg 结尾。
需要注意的是,在将图片文件包含在存储库中之前,危险的和不需要的元数据将从文件中被删除。例如,JPEG EXIF 数据有安全问题,且显示图像不需要它。这还意味着图片可能被重新压缩。
HTML 描述
在应用的详细描述中可以使用 HTML 标签,但请注意渲染器并不支持所有的标签。
- 这些简单的布局标签是
受支持的:
b,big,blockquote,br,cite,em,i,li,ol,small,strike,strong,sub,sup,tt,u,ul。 - 目前允许带
href的a,但可能会在不通知的情况下被移除。 - 明确禁止某些标签,它们是
applet、base、body、button、embed、form、head、html、iframe、img、input、link、object、picture、script、source、style、svg和video。 - 注意换行符将被自动转换成
br标签。 - 你不得使用 JavaScript。
提供元数据的方式
可以通过下面三种方式添加元数据。
在应用的代码库中
对于官方 F-Droid 存储库,强烈建议在应用的代码库中添加元数据,原因如下:
- 应用的元数据由代码库的所有者直接控制
- 代码库中的元数据会自动复制到 F-Droid 存储库(因此不需要合并请求)
- 这是提供图片的唯一方式,比如应用图标或截屏
F-Droid 支持两种不同的文件结构。这些旨在与现有的自由软件工具兼容,这些工具使你可以将应用发布到 Google Play。你不需要安装任何这些工具,因为文件结构可以很容易地手动创建。
请注意,应用的元数据文件中的文本将覆盖所有其他通过下面解释的结构提供的描述性文本。这影响到 Name,Summary 和 Description。一旦之前在元数据文件中的元数据字段被转移到应用的存储库中,请提交合并请求或问题以从应用的元数据文件中删除 Summary 和 Description。
更多细节参见本文件末尾描述的优先权规则。
F-Droid 将只使用最新发布版本里的元数据文件。这意味着 fdroidserver 将拉取它所知道的最新版本,并在该版本的存储库中查找元数据文件。
所有元数据文件都是完全可选的,除了简短的概要描述以及较长的完整描述。然而,不符合某些标准的应用将不会被显示在最新标签页上。
Fastlane 结构
第一种结构旨在与 Fastlane 提供工具兼容。
基本的文件结构如下。请注意右边的注释。当创建项目结构时,这些文件一定要被放置在正确的位置,如下所述。
├── en-US (en-US 是 F-Droid 备用语言)
│ ├── short_description.txt (短描述,最多 80 个字符,必填)
│ ├── full_description.txt (完整应用描述,最多 4000 个字符,必填)
│ ├── title.txt (应用名,最多 50 个字符)
│ ├── video.txt (介绍应用的视频 URL)
│ ├── images
│ │ ├── icon.png (应用图标)
│ │ ├── featureGraphic.png (推广横幅,显示在 F-droid 客户端中应用描述的顶部,横向)
│ │ ├── tvBanner.png (电视设备“图标”,当前未使用)
│ │ ├── phoneScreenshots
│ │ │ ├── 1.png
│ │ │ ├── 2.png
│ │ │ ...
│ │ ├── sevenInchScreenshots/
│ │ ├── tenInchScreenshots/ (你可以为不同屏幕尺寸添加不同的屏幕截图)
│ │ ├── tvScreenshots/
│ │ └── wearScreenshots/
│ └── changelogs
│ ├── 100000.txt (必须逐字对应版本码,没有多余内容)
│ ├── 100100.txt (如果版本码设为 100100)
│ └── 100101.txt (最多 500 各字符)
└── ru (其他语言环境代码)
... (客户端始终偏好本地化的元数据)
└── changelogs
└── 100100.txt
这个结构应该放置在以下来自代码库根目录的位置之一:
metadata/<locale>/fastlane/metadata/android/<locale>/
或者,如果在 Build 元数据中指定了 Gradle 构建的 flavor,那么同样支持以下位置:
src/<buildFlavor>/fastlane/metadata/<locale>/
或者,如果在 Build 元数据中指定了子目录,那么同样支持以下位置:
<subdir>/fastlane/metadata/<locale>/
(目前没有恰当地支持针对不同架构的构建 或者一个存储库内多个应用的使用情况。关注此议题跟踪此功能的实现进度。)
注意,把这个结构放在其他地方,比如在 gradle 模块的根目录下将不能正常工作。
Triple-T 结构
第二种支持的结构与 Triple-T Gradle Play Publisher 工具兼容。
将以下结构放在 <module>/src/main/play/,或者,要支持构建 Flavor,放在<module>/src/<buildFlavor>/play/,其中 <module> 是你的应用的 gradle 模块(在许多情况下是app 文件夹)。
├── contact-email.txt (开发者电子邮件 / AuthorEmail)
├── contact-website.txt (开发者网站 / AuthorWebSite)
├── release-notes
│ └── en-US
│ └── default.txt (最新更新日志)
└── listings
├── en-US (en-US 为 F-Droid 默认地区代码)
│ ├── title.txt (应用名称,最多 50 个字符)
│ ├── short-description.txt (简介,最大长度 80 字符,必需项)
│ ├── full-description.txt (完整的应用描述,最大长度 4000 个字符,必需项)
│ ├── video-url.txt (链接到应用介绍视频的地址)
│ ├── whatsnew (替代的更新日志位置;单文件,无 .txt)
│ └── graphics
│ ├── icon (应用图标,如果你的应用没有 png 图标则必需)
│ │ └── *.(png|jpg) (一张图片,通常为 512x512)
│ ├── feature-graphic (宣传横幅,显示在 F-Droid 客户端应用描述顶部;横向)
│ │ └── *.(png|jpg) (一张图片,通常为 1024x500)
│ ├── phone-screenshots
│ │ └── *.(png|jpg)
│ ├── tablet-screenshots
│ │ └── *.(png|jpg)
│ ├── large-tablet-screenshots
│ │ └── *.(png|jpg)
│ ├── tv-banner (TV 设备的图标,当前未使用)
│ │ └── *.(png|jpg)
│ ├── tv-screenshots
│ │ └── *.(png|jpg)
│ └── wear-screenshots
│ └── *.(png|jpg)
├── de (其他地区代码)
├── ...
位于应用的一个 fdroiddata 集合内的版本元数据中
注意:这个选项只适用于那些托管自己的存储库的人。如果你是想把应用放到 F-Droid 主存储库的开发者,别选这个选项。特别是不可以把屏幕截图添加到 fdroiddata 代码库。
元数据文件也可以被添加到任何构建元数据的 fdroiddata 库中。文件结构也是按照 fastlane 的结构来的,它看起来和上面所示的相同,但还有如下额外要点。
- 将文件结构放在以下位置:
<fdroiddata>/metadata/<packageId>/- 例如,对于
en-US,title.txt应位于此位置:<fdroiddata>/metadata/<packageId>/en-US/title.txt
- 例如,对于
- 概要文件应命名为
summary.txt而不是short_description.txt。 - 描述文件应命名为
description.txt而不是full_description.txt。 - 不遵循以上两点将导致 linter 失败。
位于 F-Droid 存储库中
注意:此选项仅对自托管存储库生效。
来自应用源代码库和 fdroiddata 元数据子目录的文件的最终目的地是 F-Droid 存储库。所有文本都包含在索引文件中(也称为 index-v1.json)。所有的图片文件都可以直接包含在存储库中。
如果图形文件也在应用源代码或 fdroiddata 中,则直接位于存储库中的文件将被覆盖。
你不应将文本文件直接置于存储库中。
作为参考,图片文件可以放在存储库中的以下位置:
- fdroid
└── repo
└── <package-id>
└── <locale>
├── featureGraphic.png
├── icon.png
├── tvBanner.png
├── phoneScreenshots
│ └── *.png
├── sevenInchScreenshots
│ └── *.png
├── tenInchScreenshots
│ └── *.png
├── tvScreenshots
│ └── *.png
└── wearScreenshots
└── *.png
优先级
当多个上述选项提供元数据时应用以下通用优先规则:
- 元数据文件(即
<fdroiddata>/metadata/<packageId>.yml)覆盖fdroiddata 文件,甚至是本地化的。 - fdroiddata 文件覆盖应用源代码中的元数据。
- 应用名称等数据也包含在 APK 文件中, 前两个选项均会覆盖此类数据。
然而,也应用以下更具体的规则:
- 来自应用的 fdroiddata 源的图像文件覆盖存储库中的文件。
