Repository navigation
Releases: ch6vip/fqapp
Release list
fqapp 1.0.121
fqapp 1.0.121
版本:1.0.121(126),仅支持 Android arm64。源码提交:11d762a。
APK SHA-256:2db1a41f8696f7a8ccbdff1ad5857cc8c3e528b9841e36d1be0eb3fa62be552b
自上个正式版 v1.0.96 以来的汇总(含 v1.0.105 / v1.0.106 预发布内容)。
致谢
感谢 @liuqianhe 贡献本项目的第一个外部 PR(#55):墨水屏阅读优化(正文纯黑、海信 EPD 整屏刷新、滑动直翻、单手模式)与音量键翻页修复。
阅读
- 连续阅读:分页与滚动模式到章末自动进下一章(分页模式可在排版面板开关)。
- 点击书籍直接进入阅读:设置 → 阅读可开启,点书直接进上次位置。
- 阅读背景延伸到刘海 / 挖孔区域;翻页动画跨章节;阅读时隐藏系统栏。
- 滚动模式滑到章节顶部继续下拉,回到上一章末尾。
- 墨水屏模式:正文强制纯黑;海信设备每翻 N 页整屏刷新压残影(默认 10 页,排版面板可调,0=关闭);新增滑动直翻(无过渡动画)、单手模式(点左三分之一也翻下一页)。
- 音量键翻页:后台 ↔ 前台切换后不再失效(改走原生拦截)。
- 阅读信息展示、相关系列导航、目录对比优化。
听书与音频
- 持续听书:听书会话独立于页面,底部可恢复 / 暂停 / 关闭;边读边听支持跟章。
- 系统 TTS:小说与本地书可用系统朗读;本地书听书跟随。
- 音频迷你条、听书跨页面状态修复。
播放
- 清晰度切换拉伸修复;解码器初始化失败回退;MT6895 / 天玑 8100 兼容渲染路径。
- 软件解码绿条修复(软解切 SurfaceTexture)。
- 短剧切画质转横屏不再往上全屏拉伸。
- 横屏双击:中间暂停 / 播放,左右 ±10 秒。
- 短剧里点进阅读 / 听书,视频暂停;返回后同一集继续播。
- 弹幕设置入口(短剧 feed 更多面板);浅色面板弹幕开关即时刷新。
书架、导入与备份
- 本地 TXT / EPUB 导入;修复仅标题章节导致正文空白(需先删除旧书再重新导入)。
- 收藏与进度文件备份;备份 / 恢复导出为 JSON(不含本地文件本身与缓存、统计、高亮、偏好)。
- 日志查看器重做,App 与核心日志可合并导出。
搜索与排行
- 搜索按分类、评分筛选,无封面列表视图;评分筛选只作用于已加载结果。
- 排行页新增短剧榜 / 漫剧榜;短剧榜上不出现小说分类 chips。
去品牌化
- 桌面名
fqapp、新图标;界面里「原创」「听书」「书友」,不再出现「番茄原创 / 番茄听书 / 番茄书友」。
安全与工程(简述)
- 第二轮代码审查修复合入:加密存储、密钥处理、输入校验等;CI 全绿。
- 本版未包含:#24 浮窗后台播放(仍需真机验证,后续版本)。
验证状态
- master CI:flutter analyze 无问题;Flutter 测试 1843 通过、1 跳过、0 失败;Rust 测试 176 通过、0 失败。
- APK 构建、正式签名、版本、资源、原生库及 16 KiB 对齐核验见附件 VALIDATION.md 和 verification-report.json。与既有正式签名一致,可覆盖安装。
- 如果遇到问题,请附手机型号、Android 版本、操作步骤和错误提示。
fqapp 1.0.96 — 短剧清晰度恢复 1080P
fqapp 1.0.96 — 短剧清晰度恢复 1080P
Android 手机本地运行的番茄内容聚合客户端:小说阅读、短剧与漫剧播放、听书、漫画、搜索、历史与离线缓存,全部在同一个 App 内完成。
核心(签名、解密、缓存)全部在手机上运行,不需要自建服务器,不需要 root。
⚠️ 本项目仅供学习与研究交流,不内置、不分发任何内容资源;在线内容均来自番茄公开接口,版权归字节跳动及原权利方所有。本项目与番茄/字节跳动无关联,未获其授权。
本版变化(1.0.89 → 1.0.96)
🎬 短剧清晰度恢复 1080P
短剧播放页与 feed 长按面板的清晰度列表此前最高只有 720P,现已恢复 1080P。
原因不在客户端封顶,而在取流路径:同一集内容上游有两条接口,短剧专用接口的档位表到 720P 为止,1080P 只出现在另一条接口返回的备用播放信息里;而客户端在主列表非空时就直接返回了,从未去看那份备用信息。修复过程中还发现一个解析缺陷会让备用信息里的播放地址解不出来,一并修掉。
- 面板现在会列出全部可选档位(360P / 480P / 540P / 720P / 1080P,视该剧上游实际提供而定)
- 默认档位不变(仍是自动选中的最高档);想要 1080P 请在面板里显式选择
- 编码门保持原样:设备解不了的编码档位不会被放出来,宁可少一档也不给一个放不出来的流
🎧 听书 / 听视频:通知升级为真正的媒体通知(#4 / #5)
- 折叠态直接显示「上一章 / 播放暂停 / 下一章」三个按钮,不用手动展开
- 进入系统媒体卡片(快捷设置媒体区)、锁屏媒体控制;耳机线控与蓝牙按键正常路由
- 显示真实进度与时长
- 补了显式的「关闭」动作
📖 离线:无网时也能续读(#3)
- 无网时在书架点已下载的书直接进阅读器
- 详情页在加载中或失败时,只要能查到本地整本缓存,就给出「从缓存阅读」入口
- 书架为空时补了「查看离线缓存」入口(书架空 ≠ 本地没内容)
🎬 短剧 feed 长按面板补齐官方行集
对齐官方客户端,补齐:清晰度、清屏播放、离线缓存、听视频、弹幕开关、字体大小。
🔧 其它
- 播放器加载诊断与原生 Range 处理加固
- 下载与请求处理加固
功能一览
| 功能 | 说明 |
|---|---|
| 📖 小说阅读 | 图文正文与插图、左右分页或上下滚动、排版与字体导入、亮度调节、段评、离线缓存 |
| 🎬 短剧 / 漫剧 | 自动连播、清晰度切换(最高 1080P)、倍速、上下集与快进快退、全屏方向自适应、进度续看、弹幕 |
| 🖼 漫画 | 竖向连续阅读、章节目录、单图重试、点击放大、阅读位置恢复 |
| 🎧 听书 | 智能朗读与真人讲书、边听边读字幕、关联作品、定时关闭、倍速、自动下一章、进度续听、系统媒体通知 |
| 🔍 搜索与发现 | 关键词 / 作品 ID 搜索、联想词与热搜、排行榜、作者主页、书评 |
| 📋 详情 | 封面、分类、完结状态、字数、评分、标签、简介、目录预览、书评、关联作品 |
| 🕘 历史与书架 | 阅读 / 播放进度自动记录,续读续看;离线缓存管理 |
| ⬇️ 下载 | 整本缓存、批量缓存后续章节;另支持把整本书导出为一份 TXT 到系统「下载」 |
下载与安装
设备要求
- Android 7.0(API 24)及以上,arm64-v8a 设备(近几年绝大多数手机)
- 需要网络:在线内容实时从上游获取,App 本身不内置任何内容
- 不需要 root
安装
- 下载下方
fqapp-1.0.96-arm64.apk - 点击安装(或
adb install fqapp-1.0.96-arm64.apk) - 首次启动保持联网:App 会自动完成初始化 → 启动本地核心并注册设备 → 健康检查通过后进入主界面
⚠️ 签名与升级:正式签名包与调试签名包不能互相覆盖安装。若你装过旧的调试签名版本(v1.0.17及更早),升级需先卸载再安装,卸载会清除阅读历史与缓存。同签名版本可直接覆盖升级(本版与v1.0.88同为正式签名,直接覆盖即可)。
校验信息
SHA-256(fqapp-1.0.96-arm64.apk)
45cc5c1bfe20155d582d3d8ea4555e4ee17e2e97ee1eebfa6a2150863e6ccc9a
校验方法:
# Linux / macOS
sha256sum -c SHA256SUMS
# Windows PowerShell
Get-FileHash .\fqapp-1.0.96-arm64.apk -Algorithm SHA256| 项 | 值 |
|---|---|
| 文件大小 | 31,168,424 字节 |
| applicationId | com.fqapp.fqapp |
| versionName / versionCode | 1.0.96 / 98 |
| minSdk / targetSdk | 24 / 36 |
| 签名证书 SHA-256 | e8471cd8a935fd71fd8197355b5558d245449d5bc8294f60f88616f60451c550 |
| 签名 | v1 + v2 + v3 正式签名(RSA 4096,自签名,有效期 30 年) |
附带的 verify-report.json 是构建时自动校验的原始报告,覆盖 8 项检查:
- ZIP 条目完整性 · 原生库存在性 · ELF 16 KiB 内存分页对齐 · APK 内 ZIP 16 KiB 对齐
- 签名有效性 · 签名证书指纹比对 · 版本与包名匹配 · APK 未被改动
技术说明
- Flutter UI(3.44.6 / Dart 3.12+)
- Rust 原生核心(
fqapi_core,flutter_rust_bridge 直调),另开127.0.0.1:8080loopback 服务供 Web UI 与漫画图使用 - 原生 C 流式解密库(CENC MP4,AES-CTR),加密字节落盘、解密只在内存缓冲区发生
- 架构目标 arm64-v8a;两个原生库均按 16 KiB 页对齐构建,兼容未来的大页设备
- loopback 适配器带 Host / Origin 守卫与每次启动的一次性 capability,防止本机其他应用或浏览器页面通过 DNS rebinding 访问
从源码构建
见仓库 README.md 与 DEVELOPMENT.md。
云端构建:打开 Actions → Android APK,点 Run workflow,成功后在该次运行的 Artifacts 中下载(保留 14 天)。
在 fork 中构建时拿不到正式签名密钥,工作流会自动产出未签名包并给出警告,其余校验照常执行。未签名包只能全新安装,不能作为正式发布包。
fqapp 1.0.88 — 首个正式发布版
fqapp 1.0.88 — 首个正式发布版
Android 手机本地运行的番茄内容聚合客户端:小说阅读、短剧与漫剧播放、听书、漫画、搜索、历史与离线缓存,全部在同一个 App 内完成。
核心(签名、解密、缓存)全部在手机上运行,不需要自建服务器,不需要 root。
⚠️ 本项目仅供学习与研究交流,不内置、不分发任何内容资源;在线内容均来自番茄公开接口,版权归字节跳动及原权利方所有。本项目与番茄/字节跳动无关联,未获其授权。
功能一览
| 功能 | 说明 |
|---|---|
| 📖 小说阅读 | 图文正文与插图、左右分页或上下滚动、排版与字体导入、亮度调节、段评、离线缓存 |
| 🎬 短剧 / 漫剧 | 自动连播、倍速、上下集与快进快退、全屏方向自适应、进度续看 |
| 🖼 漫画 | 竖向连续阅读、章节目录、单图重试、点击放大、阅读位置恢复 |
| 🎧 听书 | 智能朗读与真人讲书、边听边读字幕、关联作品、定时关闭、倍速、自动下一章、进度续听 |
| 🔍 搜索与发现 | 关键词 / 作品 ID 搜索、联想词与热搜、排行榜、作者主页、书评 |
| 📋 详情 | 封面、分类、完结状态、字数、评分、标签、简介、目录预览、书评、关联作品 |
| 🕘 历史与书架 | 阅读 / 播放进度自动记录,续读续看;离线缓存管理 |
| ⬇️ 下载 | 整本缓存、批量缓存后续章节;另支持把整本书导出为一份 TXT 到系统「下载」 |
下载与安装
设备要求
- Android 7.0(API 24)及以上,arm64-v8a 设备(近几年绝大多数手机)
- 需要网络:在线内容实时从上游获取,App 本身不内置任何内容
- 不需要 root
安装
- 下载下方
fqapp-1.0.88-arm64.apk - 点击安装(或
adb install fqapp-1.0.88-arm64.apk) - 首次启动保持联网:App 会自动完成初始化 → 启动本地核心并注册设备 → 健康检查通过后进入主界面
⚠️ 签名与升级:正式签名包与调试签名包不能互相覆盖安装。若你装过旧的调试签名版本(v1.0.17及更早),升级需先卸载再安装,卸载会清除阅读历史与缓存。同签名版本可直接覆盖升级。
校验信息
SHA-256(fqapp-1.0.88-arm64.apk)
17d6f1ca0af20a617264121bc916f7b22bc66c60c77adb15fe852090f1036ff2
校验方法:
# Linux / macOS
sha256sum -c SHA256SUMS
# Windows PowerShell
Get-FileHash .\fqapp-1.0.88-arm64.apk -Algorithm SHA256| 项 | 值 |
|---|---|
| 文件大小 | 31,085,502 字节 |
| applicationId | com.fqapp.fqapp |
| versionName / versionCode | 1.0.88 / 90 |
| minSdk / targetSdk | 24 / 36 |
| 签名证书 SHA-256 | e8471cd8a935fd71fd8197355b5558d245449d5bc8294f60f88616f60451c550 |
| 签名 | v1 + v2 + v3 正式签名(RSA 4096,自签名,有效期 30 年) |
附带的 verify-report.json 是构建时自动校验的原始报告,覆盖 8 项检查:
- ZIP 条目完整性 · 原生库存在性 · ELF 16 KiB 内存分页对齐 · APK 内 ZIP 16 KiB 对齐
- 签名有效性 · 签名证书指纹比对 · 版本与包名匹配 · APK 未被改动
技术说明
- Flutter UI(3.44.6 / Dart 3.12+)
- Rust 原生核心(
fqapi_core,flutter_rust_bridge 直调),另开127.0.0.1:8080loopback 服务供 Web UI 与漫画图使用 - 原生 C 流式解密库(CENC MP4,AES-CTR),加密字节落盘、解密只在内存缓冲区发生
- 架构目标 arm64-v8a;两个原生库均按 16 KiB 页对齐构建,兼容未来的大页设备
- loopback 适配器带 Host / Origin 守卫与每次启动的一次性 capability,防止本机其他应用或浏览器页面通过 DNS rebinding 访问
从源码构建
见仓库 README.md 与 DEVELOPMENT.md。
云端构建:打开 Actions → Android APK,点 Run workflow,成功后在该次运行的 Artifacts 中下载(保留 14 天)。
在 fork 中构建时拿不到正式签名密钥,工作流会自动产出未签名包并给出警告,其余校验照常执行。未签名包只能全新安装,不能作为正式发布包。