请按文档列出的步骤顺序执行,以确保发布过程的顺利进行。
- 在
pubspec.yaml
中修改版本号; - 执行项目下的
run_build.bat
脚本,根据提示确认 Android 版可以打包,且使用了正确的证书(证书使用流程见下); - 输入版本号(该输入仅用于输出的文件名,胡乱输也不影响输出的文件内容);
- 在
build/app/
目录下获取对应的安装包。
💡证书使用流程
- 在
android/
目录下创建key.properties
文件,内容如下:
storePassword=证书库密码
keyPassword=证书密码
keyAlias=证书库中的证书别名
storeFile=D:\\你的证书位置\\证书文件名
注意
Windows 上,路径中的
\
需要使用\\
转义,否则会报错。
提示
一个证书库中可以包含多个证书,具体使用哪个证书取决于
keyAlias
的设置。
- 确保
android/app/build.gradle
中android.buildTypes.release
中的signingConfig
配置正确,如下:
signingConfig signingConfigs.release
(待补充)
目前旦夕安装包的发布渠道有以下几个,每次发布时需分别操作:
发布到 Github Releases 时,需要在 Github 上创建一个新的 Release,然后上传对应的 Android 和 Windows 安装包。
注意
建议在发布前先在本地测试一下,以确保安装包的正确性。
注意
建议在点击发布按钮前,先发布到草稿,在后续工作完成后再正式发布。
💡有用的链接
- 发布新版本:https://github.com/DanXi-Dev/DanXi/releases/new
- 编写更新日志时,可以对照从上一个版本到这个版本的提交记录,如:https://github.com/DanXi-Dev/DanXi/compare/v1.3.10...main
- 编写更新日志时,可以参考以往的更新日志的 Markdown 格式,如:https://github.com/DanXi-Dev/DanXi/releases/edit/v1.3.10
目前暂时没有自动化的发布流程,需要手动上传安装包到服务器。具体咨询后端开发。
- 切换到
foss-build
分支工作; - 合并
master
分支到foss-build
分支。注意该分支应该不包含任何非 FOSS 的代码,例如 Google 广告、Mi Push 等,合并时应特别谨慎,注意解决相关冲突;
注意
需要保证
pubspec.lock
是最新的。如果你设置了 Flutter 使用国内镜像(如pub.flutter-io.cn
),你的本地pubspec.lock
中的地址将指向镜像站而非官方源(如pub.dev
),因此需要暂时修改你的镜像设置,然后重新执行flutter pub upgrade
和flutter pub get
,以确保pubspec.lock
中的地址指向官方源。任何情况下都不要向仓库提交包含国内镜像站地址的
pubspec.lock
,否则将会导致工程管理混乱,以及 F-Droid 方面无法为你构建 APK!当然,如果你从未修改过 Flutter 镜像设置,或者你确保自己使用的就是官方源,那么你可以跳过这个提示。
foss-build
将 Flutter 作为 Git submodule(中文) 引入,因此需要更新 submodule。例如你目前使用的本地 Flutter 版本是2.2.3
,则需要执行以下命令:
# 启用子模块(仅在你没有看到 .flutter 子目录时需要执行)
git submodule update --init --recursive
# 进入子模块目录
cd .flutter
# 更新源代码和标签
git fetch --all --tags
# 切换到对应的版本。Flutter 大版本的版本号(通常是这样,请自行确认)恰好是其对应的 Git tag 别名,因此可以直接使用版本号签出:
git checkout tags/2.2.3
- 在
fastline/metadata/android/<语言>/changelogs/
目录下,创建一个新的文件,文件名为当前版本 Build 号,例如333.txt
,并在其中编写更新日志。可以参考以往的更新日志的格式;
注意
各个语言都需要编写更新日志,否则 F-Droid 会认为该版本没有更新日志,从而不会发布。请不要图省事而只写中文的更新日志。
- (可选)本地执行 F-Droid 构建元文件 中含有
submodules: true
的版本下的build
部分的命令,确保能构建成功; - 提交分支并推送到远程仓库,打上版本号 tag,格式为
foss-v1.2.3
(同样缺一不可,请勿为了图省事而忽略)。
注意
git push
默认不会推送 tag 到仓库,需要使用git push --tags
。
- 等待 F-Droid 构建服务器发现新的 tag,自动构建并发布,大约需要 3-7 天。你可以在 F-Droid 构建状态 应用中查看构建状态。
💡有用的链接
- FAQ,介绍了 F-Droid 的构建流程(英文):https://gitlab.com/fdroid/wiki/-/wikis/FAQ
- 服务器整体构建状态监控(英文):https://monitor.f-droid.org/builds/build
- F-Droid 构建问题请求跟踪(英文):https://gitlab.com/fdroid/fdroiddata/-/issues
- 旦夕的构建元文件:https://gitlab.com/fdroid/fdroiddata/-/blob/master/metadata/io.github.danxi_dev.dan_xi.yml
- 构建元文件的格式说明(中文):https://f-droid.org/zh_Hans/docs/Build_Metadata_Reference/
提示
必要时(如遇到构建失败等问题),可以向上述仓库提交 issue 寻求帮助,或者 fork 该仓库,对我们的元文件进行修改后,发起 Merge request。可以参考我之前的 MR。
(待补充)
- 在 DanXi-Dev/DanXi-Backend 仓库中,打开
all.json
文件,找到"maxVersion": -2
和"maxVersion": -3
的两个条目,将其content
字段的值改为当前版本号和更新日志。
注意
字符串内容需要转义,例如
"
需要写成\"
,换行符需要写成\n
。请不要图省事而直接复制粘贴手写的更新日志,否则可能会导致 JSON 格式错误。
💡有用的链接
- JSON 格式化和转义工具(中文):https://www.bejson.com/