历时两年半开发,Fread 项目现在决定开源,基于 Kotlin Multiplatform 和 Compose Multiplatform 实现

大家好,Fread 项目开发到今天已经有两年半了,上线也已经八个月了,目前项目趋于稳定,现在决定使用 Apache 2.0 协议将其开源。

github.com/0xZhangKe/F...

首先介绍下 Fread 的技术栈。

Fread 是一个使用 KMP(Kotlin Multiplatform) 和 CMP(Compose Multiplatform) 的移动客户端应用,所以编程语言使用的是 Kotlin,技术栈也都是基于 Kotlin 的,主要如下。

上面列举了一些具有代表性的依赖库,除此之外还有很多其他的库没有列举出来,从这些具有代表性的库可以大概了解到 Fread 的技术栈。

Fread 是一个去中心化的联邦宇宙 Micro blogging 社交客户端,目前已经支持了 Mastodon、Bluesky、RSS 三种社交平台协议,这意味着你可以在同一个 App 中同时使用这三种社交平台,Fread 不仅提供了 Micro blogging 社交的一致性,也保持了不同平台的特色功能。 更重要的是,Fread 支持创建一个同时包含了三种来自不同平台的 Feeds 流,这打破了协议之间的壁垒,进一步增强了去中心化的能力,另外 Fread 也专注于提供漂亮舒适的 UI/UX。

Fread 之所以现在决定开源,一方面是刚开始没考虑好到底是付费下载还是免费试用,但是上线一周后就直接改成了免费下载,但是之前因为是闭源所以仓库中有一些敏感的数据信息,担心开源后会泄漏出去,现在已经解决了这个问题。另外我对 Fread 有不少设想和规划,开源后需要面临其他人提交 PR 的情况,这可能会打乱开发节奏,所以在最近支持了 Bluesky 之后,项目也稳定下来,才开始着手开源的事情。

目前 Fread 虽然使用了 KMP 跨平台,iOS 也能运行起来,但是只上架了 Android 版,iOS 还有一些适配工作没完成,未来适配完成后会上架 App Store。

之前为了监控线上 Crash 情况和用户量所以接入了 Firebase analytics,后来又因为消息推送接入了 FCM,并且为了中转 FCM 消息我自己搭建了一台中继云服务,这里面因为涉及到我自己的 Firebase 账户和云服务信息,所以这部分的内容从 Fread 仓库中移除了,这个在我的私有仓库,可以作为 Fread 子模块进行编译,并且设置了可选编译,意思是指通过 Fread 主仓也可以编译,功能没有什么变化,只是会缺少 Firebase 的能力,其他没有任何影响,但是我这里可以编译出带有 Firbase 能力的包并且上架 Google Play,未来在 F-droid 上架的版本也会是不包含 Firebase 的版本。

关于 Fread 更多的技术细节大家可以直接查看代码,未来我可能会继续发布一些博客介绍 Fread 中的一些设计和细节。

play.google.com/store/apps/...

相关推荐
SummerGao.9 分钟前
【解决】layui layer的提示框,弹出框一闪而过的问题
前端·layui
天天扭码37 分钟前
从数组到对象:JavaScript 遍历语法全解析(ES5 到 ES6 + 超详细指南)
前端·javascript·面试
拉不动的猪38 分钟前
前端开发中常见的数据结构优化问题
前端·javascript·面试
街尾杂货店&39 分钟前
css word
前端·css
Мартин.42 分钟前
[Meachines] [Hard] CrimeStoppers LFI+ZIP-Shell+Firefox-Dec+DLINK+rootme-0.5
前端·firefox
冰镇生鲜42 分钟前
快速静态界面 MDC规则约束 示范
前端
技术与健康1 小时前
【解读】Chrome 浏览器实验性功能全景
前端·chrome
Bald Monkey1 小时前
【Element Plus】解决移动设备使用 el-menu 和 el-sub-menu 时,子菜单需要点击两次才会隐藏的问题
前端·elementui·vue·element plus
小小小小宇1 小时前
PC和WebView白屏检测
前端
天天扭码2 小时前
ES6 Symbol 超详细教程:为什么它是避免对象属性冲突的终极方案?
前端·javascript·面试