Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

meet f-droid version code requirement #623

Merged
merged 2 commits into from
Jan 17, 2025
Merged

Conversation

ErBWs
Copy link
Contributor

@ErBWs ErBWs commented Jan 17, 2025

https://gitlab.com/fdroid/fdroiddata/-/merge_requests/18472#note_2300963696

本地测试编译后的文件是正确的 1522

传上来看看 GHA 的正不正常

@Predidit
Copy link
Owner

这个修改看上去没有太大的问题,应该不会破坏其他的构建

不过我还是怀疑做错了什么,因为 1.5.2+152 这个 versionCode 的第四位不应该是前三位的简单组合

在其他平台我们最终会得到 1.5.2.152 这种版本号

@ErBWs
Copy link
Contributor Author

ErBWs commented Jan 17, 2025

看起来没什么问题,不过现在 release 的 versioncode 是 2001,得比这个大,所以还是用 10502 了。

就是发布新版本的时候需要按照这个格式修改版本 + 号后面的数字

For flutter version X.Y.Z, version code is X0Y0Z

@ErBWs
Copy link
Contributor Author

ErBWs commented Jan 17, 2025

这个修改看上去没有太大的问题,应该不会破坏其他的构建

不过我还是怀疑做错了什么,因为 1.5.2+152 这个 versionCode 的第四位不应该是前三位的简单组合

在其他平台我们最终会得到 1.5.2.152 这种版本号

我也不是很清楚,如果不这样做貌似无法触发 F-Droid 的自动更新

如果认为这种方式不好的话或许可以通过每次修改 build.gradle 中的 versioncode 来达成目的

@Predidit
Copy link
Owner

其实我一直有些没搞明白这里发生了什么

因为在本地调试构建的 VersionCode 是 1

而 release 构建无论发生在本地还是 GHA 都是 2001

我也没有在这个工程的任何地方找到 2001 这个 magic number

@Predidit
Copy link
Owner

没有问题,我们可以在全局应用这样的修改

在这个 PR 可以合并之后告诉我

此外如果你找到了我上面问题的答案,也欢迎告诉我

@ErBWs
Copy link
Contributor Author

ErBWs commented Jan 17, 2025

我也没有在这个工程的任何地方找到 2001 这个 magic number

这个好像是谷歌的问题,因为用了 split-per-abi,所以需要为每个架构应用不同的 versionCode,好像不做配置会默认在基础上 + 1000,2000,3000,arm64-v8 是 2000

但奇怪的是我本地 release 构建也是 1,而不是 2001

@ErBWs
Copy link
Contributor Author

ErBWs commented Jan 17, 2025

现在还有一个问题是 Windows 好像要求 version 每一位要求 0-65535 而 10502直接占了 5 位,感觉有点限制版本号的递增了,我在想有什么更好的组合

@Predidit
Copy link
Owner

我有一个问题,我注意到现在的 build.gradle 有对版本号进行处理

这样的话,在 Android 构建中,我们最终得到了 105022

在其他平台得到 10502

是这样吗,如果是这样的话,我觉得没有太大的问题,65535 的限制需要很久才会达到

不过可以看看其他 APP 怎么做的

@ErBWs
Copy link
Contributor Author

ErBWs commented Jan 17, 2025

这样的话,在 Android 构建中,我们最终得到了 105022

在其他平台得到 10502

是这样的

我还有一种想法是用现在 release workflow 成功的次数作为当前 version code,然后乘100再加上 abi code,这样当前version code 就是 5502 了,而 pubspec 填写 +55,这样每次更新版本就增 1。

@Predidit
Copy link
Owner

这种做法并不稳定。

现在这样的实现我觉得已经没有问题了。

如果你也这样认为,可以告诉我,我会立即进行合并。

@ErBWs
Copy link
Contributor Author

ErBWs commented Jan 17, 2025

我认为没什么问题,可以合并

@Predidit Predidit merged commit bc0f13c into Predidit:main Jan 17, 2025
6 checks passed
@linsui
Copy link

linsui commented Jan 17, 2025

For flutter version X.Y.Z, version code is X0Y0Z

这个不重要,重要的是 abi 对应低位的数字。 flutter 默认用 1000, 2000, 4000 表示 abi,但 F-Droid 保留最高版本号的 apk 其它移到 archive 里。

@Predidit
Copy link
Owner

这听上去和上面的解决方法没有区别?我们目前只能使用比 2001 更大的 versionCode

@ErBWs
Copy link
Contributor Author

ErBWs commented Jan 17, 2025

@linsui 所以这里的意思是我们要在 F-Droid 构建时执行 https://github.com/Predidit/libmpv-android-video-build/blob/main/buildscripts/bundle_default.sh 这个文件并链接到 media_kit 中吗?这样和直接从 GitHub Release 下载有什么区别吗,为了保持 libmpv 的 ndk 和 软件一致?

image

@linsui
Copy link

linsui commented Jan 17, 2025

这听上去和上面的解决方法没有区别

目前的方法没问题

这样和直接从 GitHub Release 下载有什么区别吗

这样不符合 F-Droid 的要求

@Predidit
Copy link
Owner

好吧,我想我某些程度上可以理解这种做法。

@ErBWs

参考 Pilipala 的脚本就可以了,我们不需要继续对我们现有的 media-kit 分支应用更多的补丁

根据 media-kit 的工作方式, 相关的 .jar 目录会下载到当前工程目录下 media-kit 设置的缓存目录

我们只需要事先创建这个目录并拷贝相关 .jar 包, media-kit 就会自动跳过下载流程并使用这些已经存在的包

不过我很担心 ndk 版本之类问题会导致构建产物的不一致

@Predidit
Copy link
Owner

我想这可能是为了证明 libmpv 二进制产物来自公开代码, 并且构建过程可重复

@linsui
Copy link

linsui commented Jan 17, 2025

https://f-droid.org/docs/Inclusion_Policy/ 这里有具体要求。

@ErBWs
Copy link
Contributor Author

ErBWs commented Jan 17, 2025

现在依然难以测试,距离 release 1.5.2 commit 之后增加了一个 bug 修复 commit,无法构建出和 release apk 一样的二进制文件,只能先包含 submodule

@linsui
Copy link

linsui commented Jan 17, 2025

我们先跑通 libmpv 的构建,大概率有一些可重复构建的问题。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants