一个基于 HarmonyOS 的 FreshRSS 原生客户端。 面向自托管 FreshRSS 用户,提供更流畅、更稳定的移动端 RSS 阅读体验。
HarmonyOS Native · FreshRSS · Local First · Offline Reading
FreshRSS Harmony 是一个 HarmonyOS 原生 RSS 阅读应用。 应用通过 FreshRSS Google Reader Compatible API 连接用户自行部署的 FreshRSS 服务,在 HarmonyOS 设备上完成订阅浏览、文章阅读、状态同步、离线缓存等操作。
项目定位:
- 面向个人自托管 FreshRSS 用户
- 注重本地体验与数据控制
- 尽可能减少不必要的服务器请求
- 保持弱网和离线环境下的可用性
- 提供符合 HarmonyOS 使用习惯的原生阅读体验
适用于:
- 家庭 NAS 部署的 FreshRSS
- 私有服务器上的 FreshRSS
- 希望在 HarmonyOS 上使用原生 RSS 客户端的用户
本项目为独立开发的第三方 FreshRSS 客户端,不是 FreshRSS 官方客户端,也不隶属于 FreshRSS 官方项目。
- FreshRSS 服务连接
- 自动登录
- 记住服务器地址和用户名
- 支持退出登录
- FreshRSS 地址只需填写站点根地址
- 无需手动填写
/api/greader.php
- 顶部9按钮快捷操作栏:展开、折叠、刷新、全部、未读、添加、搜索、最近、收藏
- Feed 订阅浏览
- 文件夹分组
- Feed / 文件夹 / 总未读数量
- 收藏数量统计
- 文件夹展开 / 折叠(支持临时展开/折叠,不改变记忆状态)
- 文件夹展开状态记忆
- 新增订阅
- 修改订阅标题
- 移动订阅
- 移动到未分类
- 取消订阅
- 文件夹改名 / 删除
- 本地未读数量即时联动
- 订阅源图标与文字垂直居中对齐
- 手势返回不退出到桌面
- 顶部6按钮快捷操作栏:刷新、全部、未读、滚动已读、已加载已读、全源已读
- 分页加载文章
- 连续加载超过 50 篇文章
- 仅显示未读 / 显示全部
- FreshRSS 真实未读数量
- 滑动切换已读 / 未读
- 收藏 / 取消收藏
- 滚动时自动标记已读
- 当前已加载全部标记已读
- 当前订阅源全部标记已读
- 批量标记已读
- 本地缓存
- 离线浏览
- 返回列表后状态即时更新
正文使用 ArkUI 原生组件渲染,而不是把整个阅读页面简单交给 WebView。
目前支持:
- 正文阅读
- 标题与段落
- 正文图片(宽度自适应,长图完整显示不截断)
- 行内链接
- 粗体 / 斜体
- 无序列表 / 有序列表
- 引用
- 代码块
- 打开原文
- 分享文章
- 复制标题和链接
- 上一篇 / 下一篇
- 横向滑动切换文章
- 自动标记已读
- 手动切换已读 / 未读(已读空心图标,未读实心图标)
- 收藏文章
- 连续分页阅读
- 阅读进度保存与恢复
- FreshRSS 全文 CSS 抓取后的常见 HTML 内容
针对部分使用 FreshRSS 全文 CSS 选择器获取正文的订阅源,也持续进行兼容性完善。
- 点击正文图片进入全屏
- 双指捏合缩放
- 放大后单指拖动
- 点击关闭
- 长按保存图片
- 复制图片链接
- 浅色主题
- 深色主题
- 跟随系统主题(自动适配手机深色/浅色模式)
- 纯黑暗模式(仅在深色主题下生效,状态栏与导航栏同步纯黑)
- 护眼模式(全局米白背景 + 深灰文字,柔和护眼,状态栏与导航栏同步护眼配色)
- 首页布局自定义(文件夹字号、订阅源字号、左边距、行间距)
- 文章列表字号自定义
- 阅读界面字号、行距、段间距自定义
- 首页缓存
- 文章列表缓存
- 正文图片缓存
- 指定订阅源主动缓存
- 多订阅源文章列表并行拉取 + 图片统一限流下载(慢源不阻塞其他源)
- 离线启动
- 离线查看订阅
- 离线阅读已缓存文章
- 网络失败时缓存降级
- 可配置文章缓存容量、媒体缓存容量、已读文章保留时长
- 自动淘汰长期未使用缓存
- 缓存容量控制
- 缓存版本升级与旧缓存失效处理
- 存储空间保护
网络不可用时,已读和收藏操作会优先在本地生效:
用户操作
↓
本地状态立即更新
↓
写入 Pending 队列
↓
等待网络恢复
↓
自动同步 FreshRSS
支持:
- 离线标记已读 / 未读
- 离线收藏 / 取消收藏
- Pending 操作队列
- 网络恢复自动补同步
- 本地状态与服务器状态合并
- 本地全局搜索
- 最近搜索记录
- 阅读历史
- 阅读进度
- 收藏文章管理
设置主界面菜单:常规、显示和外观、手势、缓存、数据维护、同步诊断、账号、关于。
包括:
- 常规设置(排序、刷新策略、文件夹显示、首页行为)
- 显示和外观(主题、护眼模式、纯黑暗模式、首页设置、文章列表设置、阅读页面设置)
- 手势设置(左右滑动动作、到顶下滑打开原文、全部已读返回)
- 缓存设置(已读文章保留时长、文章缓存容量、媒体缓存容量,均支持自定义数值输入)
- 数据维护(数据健康检查、分级清理:文章缓存/媒体缓存/阅读历史/搜索历史/同步历史/稳定性日志,支持一键清理以上所有)
- 同步诊断(同步状态、错误记录、稳定性日志导出为 TXT 文件)
- 账号设置
- 关于页面
- 首页/文章列表/正文齿轮设置按钮:短按进入设置,长按直接弹出对应设置子界面
为了减少不必要的 FreshRSS API 请求,目前支持多种刷新策略:
- 仅手动刷新
- App 启动时刷新
- 进入 / 返回首页时仅刷新未读数量
- 仅在 Wi-Fi 下刷新
- 仅在 Wi-Fi 下缓存
同时加入轻量未读刷新和请求节流。
阅读文章或修改已读状态后:
总未读
文件夹未读
Feed 未读
会优先通过本地状态即时联动,而不是每次返回首页都重新请求完整订阅数据。
FreshRSS 文章接口通常采用分页返回。 客户端会保存 continuation 信息:
第一页
↓
阅读到末尾
↓
继续请求下一页
↓
第 51 篇
第 52 篇
第 53 篇
……
因此不会因为单页接口返回数量限制而中断阅读。
使用本应用需要:
- 一个已经正常部署并可以访问的 FreshRSS 服务
- FreshRSS 已启用 API
- 拥有可以进行 API 登录的 FreshRSS 用户账号
FreshRSS 官方项目: https://github.com/FreshRSS/FreshRSS
登录时服务器地址只需填写 FreshRSS 根地址,例如:
https://rss.example.com
无需填写:
/api/greader.php
客户端会自动处理对应 API 路径。
请前往: https://github.com/wtronfi/FreshRSS-Harmony/releases
下载对应版本的 HAP。
当前 GitHub Release 主要用于提供应用安装包。
- 无签名 HAP 不能直接作为普通正式安装包安装
- 需要使用自己的 HarmonyOS 签名环境重新签名
HarmonyOS 应用升级会校验应用签名身份。 如果已经安装:
com.freshrss.reader
后续版本建议继续使用同一套签名身份。 否则可能出现签名不一致而无法直接覆盖升级的情况。
如果必须卸载后重新安装,请注意:
卸载应用会同时清除本地设置、登录状态、文章缓存和其他应用本地数据。
本应用不提供额外的 RSS 中转服务器。 FreshRSS 账户信息和 RSS 数据由客户端直接与用户自行配置的 FreshRSS 服务通信。
FreshRSS Harmony 2.18
Version Name : 2.18
Version Code : 2026090513
Bundle Name : com.freshrss.reader
2.18 作为当前稳定基准版本。 后续主要进行:
- Bug 修复
- 性能优化
- 特殊订阅源兼容
- 阅读体验持续打磨
感谢:
- FreshRSS —— 提供优秀的自托管 RSS 服务及 API 能力
- Capy Reader —— 本项目部分 UI、文章列表和阅读交互设计曾参考其实现思路
本项目针对 HarmonyOS 与 FreshRSS 使用场景进行了独立实现和适配。
当前仓库主要用于:
- 项目展示
- 应用截图
- 版本发布
- HAP 下载
当前源码暂未公开。











