copymanga icon indicating copy to clipboard operation
copymanga copied to clipboard

F-Droid

Open linsui opened this issue 2 years ago • 83 comments

请问可以打包发布到 F-Droid 吗?

linsui avatar Jun 10 '22 14:06 linsui

现在还远远没有完成,发上去感觉不是很合适。

fumiama avatar Jun 13 '22 09:06 fumiama

这个应用完成度比 F-Droid 上一半的应用都要高 :joy: 。F-Droid 上每周都会有几个花了一天写出来的应用。

linsui avatar Jun 13 '22 10:06 linsui

好家伙,你打包需要重新签名吗?如果需要,更新就会有问题了。

fumiama avatar Jun 13 '22 12:06 fumiama

F-Droid 用自己的密钥签名,更新会通过 F-Droid 的应用推送。不同渠道之间没办法更新。不过这个应用我看了一下应该没有需要打补丁的地方,所以可以试试可重复构建。如果 F-Droid 能构建出完全相同的 apk 就可以直接发布你签名的版本。

linsui avatar Jun 13 '22 12:06 linsui

我试了一下可重复构建,得到的 apk 内容是相同的但是打包的文件顺序不一样。你的 apk 文件顺序是打乱的。如果你可以在打包的时候对文件排序应该就可以构建出完全相同的 apk 了。F-Droid 一般使用 disorderfs --sort-dirents=yes --reverse-dirents=no.

linsui avatar Jun 16 '22 07:06 linsui

我试了一下可重复构建,得到的 apk 内容是相同的但是打包的文件顺序不一样。你的 apk 文件顺序是打乱的。如果你可以在打包的时候对文件排序应该就可以构建出完全相同的 apk 了。F-Droid 一般使用 disorderfs --sort-dirents=yes --reverse-dirents=no.

为什么要相同呢,签名一样不就好了

fumiama avatar Jun 16 '22 12:06 fumiama

F-Droid 中可重复构建是通过 apksigcopier 实现的,它将上游的 apk 中的签名部分直接复制到构建出来的 apk 文件末尾。因此 apk 必须完全一直才能验证安装。但 apk 中的内容顺序不一致会产生不同的 zip 文件,虽然大小和内容都一样,但 hash 值不同。

linsui avatar Jun 16 '22 12:06 linsui

这也太怪了😂要不你构建一下,我来签个名

fumiama avatar Jun 16 '22 12:06 fumiama

:joy: 可以是可以,但这样就是每次都要麻烦你,没有办法自动更新。我用 GitLab CI 构建的 apk 在。我认为比较好的办法是用 disorderfs 解决文件顺序的问题。

linsui avatar Jun 16 '22 12:06 linsui

我是用as构建出来的,理论上disorderfs也会改变zip的哈希,这样v2签名是失效的。只要签名相同就能随便覆盖了,我每次构建也并不是走actions自动构建,签名不会太麻烦。总之我先签名了一下,你看看可不可用。 top.fumiama.copymanga_23.zip 我已经把apk扩展名改为zip,你改回去即可。

fumiama avatar Jun 16 '22 13:06 fumiama

这个签名文件用 zipinfo 查看,第五个字段是 bl,但我构建的和你之前发布的 apk 这个字段是 b-。不知道是什么原因,可能是因为扩展名改了一次?

       第五个字段包含了两个字符,它们中的每个都能取若干个值.第一个字符可能是`t'或者`b',相应地表示
       文件是文本的或者是二进制的;但是如果文件被加密,zipinfo  通过大写字符(`T'或者`B')来表示.第二
       个字符可以取四个值,它依赖于是否存在一个本地的头信息并且/或者一个和那个文件相关的 "额外" 字
       段(详细解释参看 PKWare's APPNOTE.TXT,它基本上类似于ANSI  C中的pragmas,它们提供了一种包含非
       标准信息的标准方法).如果两者都不存在,该字段为连字符(`-');如果有一个扩展的本地头信息但是没
       有额外字段,则为`l';反之为`x';如果都存在,则为`X'.这样上面示例中的文件(很可能)是一个未被加密
       的文本文件,并且没有额外字段和本地头信息与之相关联.下面的例子则是一个有额外信息的二进制文
       件.

linsui avatar Jun 16 '22 13:06 linsui

不过我这里是b-,那我再打包一层试试。 top.fumiama.copymanga_23.apk.zip 屏幕快照 2022-06-16 下午10 22 33

fumiama avatar Jun 16 '22 14:06 fumiama

这三个是 b-,但大部分是 bl。但我构建的 apk 中所有文件都是 b-。很奇怪。

linsui avatar Jun 16 '22 16:06 linsui

这三个是 b-,但大部分是 bl。但我构建的 apk 中所有文件都是 b-。很奇怪。

我换了个签名命令试了试,现在应该可以了。 top.fumiama.copymanga_23.apk.zip

fumiama avatar Jun 16 '22 16:06 fumiama

非常好,这次没问题了,谢谢!那么我们就先用这种方式?

linsui avatar Jun 16 '22 17:06 linsui

非常好,这次没问题了,谢谢!那么我们就先用这种方式?

可以,因为我也不是很经常发版😂之后有更新你可再在此issue提及。

fumiama avatar Jun 17 '22 03:06 fumiama

可以把上面这个 apk 发在 release 里或者其他什么地方吗,这样就有一个有版本的稳定链接了。然后我可以在这个存储库里添加 fastlane 元数据吗?F-Droid 会从这里抓取应用描述。

linsui avatar Jun 17 '22 03:06 linsui

你可以pr我看看,apk我已发至最新release

fumiama avatar Jun 17 '22 03:06 fumiama

请问设定页就是空的吗?还是要登录才有选项?

linsui avatar Jun 17 '22 04:06 linsui

空的,啥都没写(

fumiama avatar Jun 17 '22 05:06 fumiama

https://gitlab.com/fdroid/fdroiddata/-/merge_requests/11199 MR 可以合并了,有什么需要补充的吗?比如捐款方式之类的。

linsui avatar Jun 17 '22 05:06 linsui

没什么了,挺好的

fumiama avatar Jun 17 '22 05:06 fumiama

谢谢,已合并,大概一周之内会发布。

linsui avatar Jun 17 '22 05:06 linsui

这个是 F-Droid 的徽标,我看了一下不知道放哪里合适。

[<img src="https://fdroid.gitlab.io/artwork/badge/get-it-on.png"
    alt="Get it on F-Droid"
    height="80">](https://f-droid.org/packages/top.fumiama.copymanga)

Get it on F-Droid

linsui avatar Jun 17 '22 05:06 linsui

我等会放readme

fumiama avatar Jun 17 '22 05:06 fumiama

新版本的 apk 文件还是乱序的。我用 AS 构建了一下并没有出现这种情况,或许是环境不同?

linsui avatar Oct 16 '22 09:10 linsui

不清楚,你试试v1 v2签名都选上呢

fumiama avatar Oct 16 '22 11:10 fumiama

我构建的 apk 是未签名的。签名应该不影响文件顺序。我猜可能和文件系统操作系统什么的有关系。我只在 linux 上测试过。

linsui avatar Oct 16 '22 12:10 linsui

很奇怪了😂,另外你写别急着更新,最近可能还有改动。

fumiama avatar Oct 17 '22 02:10 fumiama

好 :ok_hand:

linsui avatar Oct 17 '22 02:10 linsui