首页版面好友提醒登录
返回未名湖版 同主题展开

贵站第三方安卓客户端(周年总结

onepiece一片 2023-08-09 22:40:12
文摘 #449

从2022年8月中旬开始看dart和flutter,8月20号开始写这个app,8月23号第一次commit,9月4号放到了贵站water版,到现在差不多一年了。本来想23号再写一周年总结,结果今天看到了某个新闻,觉得还是提前写一下。另外,当时看到“敬请期待”、“即将发布”,有点慌,早发布了,要不然我应该是会把富文本弄好再放到water版的。


# 一些链接

最新版本 https://bbs.pku.edu.cn/v2/collection-read.php?path=groups%2FGROUP_0%2FPersonalCorpus%2FO%2Fonepiece%2FD93F86C79%2FA862DAFBA

发布帖 https://bbs.pku.edu.cn/v2/post-read-single.php?bid=103&type=2&postid=26087224

介绍帖合集 https://bbs.pku.edu.cn/v2/collection.php?path=groups%2FGROUP_0%2FPersonalCorpus%2FO%2Fonepiece%2FD93F86C79%2FD84E306E6

总合集 https://bbs.pku.edu.cn/v2/collection.php?path=groups%2FGROUP_0%2FPersonalCorpus%2FO%2Fonepiece%2FD93F86C79


Github https://github.com/wukgdu/bdwm_viewer

之前各个版本附件的 apk 是 https://github.com/wukgdu/bdwm_viewer/releases 里的 arm64-v8a 版本。


# App介绍

为什么叫 OBViewer

    Onepiece's BDWM Viewer,参考了BEAM虚拟机的缩写,而且 ob 和 viewer 是近义词?最开始是只想做浏览的,发帖都不想支持,所以是viewer,结果后来越写越多。

图标怎么做的

    PPT里写了个“未”,然后放到 https://cojdev.github.io/lowpoly/ 里处理了一下。

为什么“第三方”

    因为官方的新版在“敬请期待”、“即将发布”,旧版只支持到安卓10,不过小程序也还好用,网页也不错。


# 整体情况

功能

    见附件图片。

代码

github.com/AlDanial/cloc v 1.96

-------------------------------------------------------------------------------

Language                     files          blank        comment           code

-------------------------------------------------------------------------------

Dart                           115           1613            810          23912

-------------------------------------------------------------------------------

SUM:                           115           1613            810          23912

-------------------------------------------------------------------------------

flutter写了这些,还写了几个kotlin(我不会写kotlin/Facepalm)、写了几个xml布局(不会写安卓/Facepalm)。

其他的可以到 GitHub 上看。


# 开发过程

展示的数据基本是爬取了网页再解析得到的,操作的接口和参数是看浏览器控制台的网络请求和压缩后的js代码猜/试出来的,比较复杂/难猜的是 发帖 和 上传附件,其他的还好。


多用户登录是用不同的用户id和token请求了数据。用户id和token是网页请求数据也需要的,存储在了该app包独有的路径下,不root的话,正常操作应该拿不到这个。登录或登出有问题的话,可以到term下踢了。

版务操作是 @Moony 把我拉成版务后,到测试版试出来的,和之前一样。


遇到的稍微复杂或比较难的点就是 看主题帖时自动隐藏底部栏 和 富文本编辑/发帖/显示。

第一个是用的两个方法各有优缺点,之前用的一种方法需要自己判断滑动方向,我经常弄错,太坑了,后来换成第二种方法,缺点就变成了 直接跳转到主题帖下某个帖子时,上面的帖子如果有需要加载的图片,那么在图片加载出来之后,上面的长度会变长,所以跳转的位置会偏上。

第二个是要把 html格式的正文转成flutter渲染的textspan以及使用的flutter_quill富文本编辑库内部的quill格式,和quill到贵站富文本的格式,还写了html到贵站的格式(废弃了)。这一部分需要想一下,不过也是简单的循环,其他功能实现基本不费脑子,顶多复杂。


# 一些设置

我是用的 material design 3,已经看习惯了,再看2有点不习惯,但是默认的还是2。

预览图片质量选“高”,就是帖子里插入的图片默认会清晰一点(原图),不使用cache height,但是会占比较多的空间。

自动清理图片缓存会在离开主题帖页面时清理图片缓存,包括缓存的原图、用户头像、qmd图片等,会清除上一步较多的占用空间,但是下次需要重新下载,我一般关上,等缓存多了手动清理的(小工具里有个看图片缓存大小和清除图片缓存的地方,或者到该app设置里清理)。

十大拍照爬帖子的时候懒得设置时间间隔了,多用这个可能会被封ip。


# 交流

最开始找了 @Moony 测试,当时各种不完善,网络有问题都会到奇怪的界面。Moony 大概算是小白鼠,饱受折磨,所以之后他提的功能要求我会写一些,包括网页扩展。

之后和 @hahahah @cscc @headacheboy @Bigscience 等也有一些交流,还有开始几个版本帖子里提建议的用户,感谢。

@tcfa 后来说可以问 @alwaysmoving 接口的事情,得知之前留给官方app的接口需要非公开的 token,我觉得有点压力,然后还是算了。


# flutter吐槽

flutter猛一看很好用,用着也很好用,但是碰到了某些问题的时候,就会发出“怎么这么基础的东西也有bug”的疑惑,然后会在GitHub上找到几年前的issue,到现在也没解决,或者讨论不活跃被机器人关了(标着5k+的issue,点进去其实有11k+,而且很多没解决被机器人关掉了)。


# 之后的计划

无。

可能等我用上安卓14后看一下文件读取权限的变化,还有返回预览是啥。

未来不知道会是什么样。

签名档

昨日入城市,归来泪满巾。

遍身罗绮者,不是养蚕人。