提交到 F-Droid 快速入门指南
这样做显然是将自己的包放入存储库的最佳方法,因为你可以为有关包的元数据提供直接合并请求,从而使维护人员轻松。
要理解这一过程的概况,请阅读收录指南的元数据合并请求提案部分。
第一步
在你想被收录的应用的源代码中,找到所有的 AndroidManifest.xml 和 _build.gradle_文件,并写下它们之中最详细文件所在的子目录。
在 GitLab 上注册,并 fork fdroiddata 代码库。
上游元数据
应用的上游 Git 存储库中的每个官方 release 提交都应该有一个标签。比如,如果应用的 AndroidManifest 包含 versionName: '1.0
,则该提交需要一个 v1.0
标签。我们强烈鼓励在应用的源码库中也添加元数据:
- metadata/en-US/short_description.txt (30-50 个字符, 无拖尾点)
- metadata/en-US/full_description.txt
- metadata/en-US/images/icon.png
- metadata/en-US/images/phoneScreenshots/screenshot.png
如 AndroidManifest 包含 versionCode: 123
, 对于这个版本中的新变化应该有相应的解释:
- metadata/en-US/changelogs/123.txt (最多 500 个字符)
浏览 F-Droid 客户端元数据 目录查看真实世界样例。
也支持其他格式和位置的 描述、图像和截屏。比如,metadata/en-US_目录可以是 _fastlane/metadata/android/en-US。
如果存储库没有这些文件,则向应用的开发团队发送合并请求,如果没有版本标记,则新开一个问题。有了这些元数据,开发人员就可以直接控制它,它们的更新和未来的翻译将被自动拉取。
构建环境
2022 年 2 月,在装有 Ubuntu 21.10 系统的笔记本上,需要 2GB 流量和 5GB 磁盘空间来建立一个 F-Droid 构建环境。
网络要求:
- 60 MB: 浅克隆 fdroiddata 和 fdroidserver
- 75 MB:安装 docker.io
- 1000 MB:加载容器
- 800 MB: 构建
存储要求:
- 1000 MB: 克隆代码库并安装 docker.io
- 4000 MB: 加载容器和构建
下载你的 fork,接着建立新分支和一个元数据文件。比如,如果应用的 build.gradle 说 applicationId "com.example"
:
git clone --depth=1 https://gitlab.com/YOUR_ACCOUNT/fdroiddata ~/fdroiddata
cd ~/fdroiddata
git checkout -b com.example
cp templates/build-gradle.yml metadata/com.example.yml
填写 ~/fdroiddata/metadata/com.example.yml,依据是 构建元数据参考。如果你已经说服了应用的开发团队像上面解释的那样在存储库中包括描述和使用版本标签,这个文件将非常简洁:
Categories:
- Internet
- Navigation
License: GPL-3.0-or-later
SourceCode: https://gitlab.com/APPLICATION_UPSTREAM/ExampleCom
RepoType: git
Repo: https://gitlab.com/APPLICATION_UPSTREAM/ExampleCom
Builds:
- versionName: '1.0'
versionCode: 123
commit: v1.0
# Where build.gradle is:
subdir: app
sudo:
- apt-get update || apt-get update
- apt-get install -y librsvg2-bin openjdk-11-jdk-headless
- update-alternatives --auto java
gradle:
- yes
AutoUpdateMode: Version
UpdateCheckMode: Tags
CurrentVersion: '1.0'
CurrentVersionCode: 123
如有需要,调整或删除相关的 sudo 行:
示例应用的 build.gradle 执行 rsvg-convert 来栅格化它的矢量图标,因此我们从官方 Debian 存储库安装 librsvg2-bin。所有这样的依赖项应该在应用的 README 中明确。
build.gradle 提到了
com.android.tools.build:gradle:7.1.0
,Gradle Android 插件版本 7 依赖于Java 11。因而我们安装 openjdk-11-jdk-headless 并选中它作为 java 备选。
下载并启动最新版本的服务器工具容器:
git clone --depth=1 https://gitlab.com/fdroid/fdroidserver ~/fdroidserver
sudo sh -c 'apt-get update &&apt-get install -y docker.io'
sudo docker run --rm -itu vagrant --entrypoint /bin/bash \
-v ~/fdroiddata:/build:z \
-v ~/fdroidserver:/home/vagrant/fdroidserver:Z \
registry.gitlab.com/fdroid/fdroidserver:buildserver
在容器中:
. /etc/profile
export PATH="$fdroidserver:$PATH" PYTHONPATH="$fdroidserver"
export JAVA_HOME=$(java -XshowSettings:properties -version 2>&1 > /dev/null | grep 'java.home' | awk -F'=' '{print $2}' | tr -d ' ')
cd /build
fdroid readmeta
fdroid rewritemeta com.example
fdroid checkupdates --allow-dirty com.example
fdroid lint com.example
fdroid build com.example
如任何命令,比如 fdroid readmeta
,返回一个错误,相应编辑 ~/fdroiddata/metadata/com.example.yml 并尝试再次运行命令。在成功的构建后,退出容器,使用 New App
标签提交元数据文件,并将它推送到你的 fork:
exit
cd ~/fdroiddata
git add metadata/com.example.yml
git commit -m "New App: com.example"
git push origin com.example
在 fdroiddata 存储库创建一个 合并请求,选中你的 com.example 源码分支。等待打包人员接收你的合并请求。如果他们有任何问题,请跟踪,并尽快回复。
故障排除
你可以通过 IRC、Matrix、XMPP、电子邮件和其他渠道 获取 F-Droid 的帮助。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论