Skip to content
jipinwaPublic

About

红果鉴 / 真果鉴 支持安卓6.0

Resources

Stars

370 stars

Watchers

1 watching

Forks

Repository files navigation

红果鉴 / 真果鉴

Flutter 独立短剧应用,支持 Android 手机和 Android TV。站源请求、解析、下载和播放均在设备上完成,不依赖旧项目、远程自建服务或第三方中转。原生核心为 Go(FFI 接入),播放器基于 media_kit / libmpv。 修改加入的对安卓6的支持

当前源码版本:0.2.73+88(未验证开发快照)。按 2026-09-21 的约定,功能优先、暂停集中测试与回归;未经设备验收的能力均标注"待验证",不作为已通过验收的版本。

版本与编译选项

编译方式 应用名称 可用站源
默认,不加参数 红果鉴 仅红果
构建脚本加 --all-sources 真果鉴 全部站源

这是编译选项,应用内不能切换。标题、桌面名称、窗口与分发文件名随编译选项变化;界面、站源调用、原生下载调度同时限制可用站源。两版保留同一应用标识与数据目录,可相互覆盖升级,切换版本保留追剧、观看记录、用户权限和下载记录;备份格式兼容。

功能概览

功能 说明
浏览与搜索 分类目录分页、在线搜索(红果带搜索联想)、榜单(红果热播 / 真人剧 / 漫剧 / AI 剧,全站源版另有黄豆、黄果榜)、分类推荐
播放 手机竖屏沉浸式播放页(红果短剧风格):左右滑快进后退(带进度提示)、上下滑切集(带滑动过渡动画),选集 / 简介 / 下载收进底部按钮与底部抽屉;画质、倍速、切集、横竖屏自适应、自动连播、自动切线、备用线路、播放错误重试;设备内流服务代理 HLS 播放列表并重写,普通 MP4 流直通
弹幕 红果在线播放弹幕,开关按用户保存,播放器侧边按钮控制
追剧与历史 追剧、更新提醒、观看记录、断点续播,按本地用户隔离
下载与离线 分集选画质下载、批量管理、断点续传、Android 后台服务、离线播放、目录迁移
用户与权限 本地多用户、管理员密码、站源 / 下载权限分配、配置备份与恢复
局域网互联 mDNS 自动发现、HTTPS 直连、追剧与进度增量同步、推送续播(不经过服务器)
画质增强 物理输出尺寸适配、RAVU、动漫 CNN、FSRCNNX 等;原仅 Windows 桌面端开放,Windows 端移除后暂不生效
Android TV 自动识别电视、统一横屏、遥控焦点模型与选项对话框;播放控制条 3 秒自动隐藏并带渐隐过渡
主题 浅色 / 深色 / 跟随系统

站源可用性、清晰度和区域限制取决于源站及网络;应用不解除源站 VIP 或其他授权限制。

站源

站源 浏览与播放 搜索
红果 真人剧、漫剧、AI 剧及分集 联网搜索与官网搜索联想
黄豆(全站源版) 列表、VIP 标记及分集 筛选已加载短剧
剧果(全站源版) 热门、最新、接口分类、详情及可播放分集;签名 Cookie 接入在线播放、预加载和下载,待验证 站源在线搜索,支持继续加载
野果(全站源版) 接口分类、目录、详情及分集;支持线路发现与备用线路,待验证 站源在线分页搜索
帝果(全站源版) 网页分类、目录、详情及分集;vplayer 签名解析,待验证 站源在线分页搜索
黄果视频(全站源版) 列表、详情及分集 筛选已加载短剧
黄果 AI(全站源版) 列表、分类、详情及分集;入口连接与播放恢复待外部条件,见 TODO P1-4 筛选已加载短剧
黄果旧版(全站源版) API 分类、列表、详情及分集 筛选已加载短剧
芽果(全站源版) 星芽接口分类、目录、详情及分集;登录令牌缓存,待验证 站源在线搜索
猫果(全站源版) 七猫签名接口目录、详情及分集,待验证 站源在线搜索
饭果(全站源版) 西饭搜索接口目录与详情,单页目录,待验证 站源在线搜索
观果(全站源版) 围观接口目录与分集;详情接口实测返回空数据,待验证 站源在线搜索
河果(全站源版) 河马网页 __NEXT_DATA__ 目录、详情及分集,待验证 站源在线搜索(POST /seo/video/6007)
星果(全站源版) 星星接口连载目录、详情及分集,待验证 站源在线搜索(GET /novel-api/basedata/book/searchBook)
花果(全站源版) 网页分类、目录、详情及分集,待验证 站源在线搜索
牛果(全站源版) 接口 AES 目录、详情及分集,待验证 站源在线搜索
网果(全站源版) 网页分类、目录、详情及分集,待验证 站源在线搜索
发果(全站源版) 网页分类、目录、详情及分集,待验证 站源在线搜索
皮果(全站源版) 网页目录与详情;ptt.red 由 Cloudflare 校验拦截,当前 HTTP 方式无法通过 站源在线搜索
伍果(全站源版) 网页分类、目录、详情及分集,待验证 站源在线搜索
青空(全站源版) 番剧、剧场动画、特摄分类分页、详情及分集;源码移植,待验证 站源在线分页搜索
鬼片(全站源版) 鬼片、电视剧、动漫分类分页、详情及多线路分集;源码移植,待验证 RSS 最新条目标题匹配(站点搜索接口已停用,命中范围限于最新一批影片)
韩小圈(全站源版) 韩剧、韩国电影、综艺动漫分类分页、详情及分集;源码移植,待验证 站源在线分页搜索

站源管理:每个入口显示缓存数量、分页位置、最近更新时间和错误,可分别更新、继续一页、补齐资料、停止任务和健康检测;检测结果持久保存,解析失败保留已有缓存。受限用户需由管理员分配站源权限,已有用户不会自动获得新增站源。

安装包与平台状态

平台 状态
Android 6.0+ 手机 源码 0.2.73+88;构建脚本与 Actions 产物可用(CI 仅编 arm64-v8a),真实安装与运行待验收;浏览、搜索、在线播放支持安卓 6(minSdk 23,Flutter 3.32.8)。本地媒体处理改用 mobile-ffmpeg(yangfeng1994/FFmpeg-Android v2.0.1,arm64 so 实测 minApi 21,jitpack 引入,按需加载不影响启动):HEIC 海报转码、分集合并、Emby 导出、本地媒体页全部恢复;无 FFprobe,媒体探测由 ffmpeg 日志解析提供;安装图标为满幅 PNG 品牌图,无黑边;离线播放走 Go 核心按分集播放
macOS 12+ 按 2026-10-02 要求停止编译;平台源码保留,不提供安装包与 Actions 产物
Android TV 与手机共用 Android 源码;0.2.73 起下一集预载提前到起播 5 秒后(原"播到一半才预载",切集需重新解析,预载完成后切集直接复用已解析地址与预取数据);0.2.72 的点击立即进播放加载页、播放页返回键先收控制条、安卓端 media_kit surface 参数后挂载(修复首帧黑屏需暂停再播放)、TV 卡片余量与分类间距加大保留;播放内核为 media_kit 1.2.6 / video 2.0.1(已是官方最新,暂无升级空间,更换播放内核需整链重写且丢失弹幕与画质增强,不做);0.2.71 的起播 60 秒缓冲保留;待实机验收

INSTALL_FAILED_NO_MATCHING_ABIS 表示 APK 与设备架构不匹配,请更换对应架构安装包。Android APK 默认压缩原生 .so 库,安装时由系统解压。

已知模拟器问题:MuMu 等 houdini 转译环境下快速进出播放页时,引擎销毁窗口期可能触发 FinalizerDaemon 的 SIGSEGV(media_kit 已知问题类别);0.2.68 已为播放器释放链加 3 秒超时兜底。0.2.69 起应用退出(Activity finish)且无下载服务运行时立即结束进程,避免残留进程中被销毁引擎的 mpv 引用二次释放,真机 TV 盒上重进播放闪退(log.txt 中 Fatal signal 11)按此方案缓解,待实机验收。

GitHub Actions

推送 main / master、v* 标签、提交 PR,或手动运行 Build app packages,构建以下产物(保留 14 天):

红果版 Artifact 全站源版 Artifact 内容
hongguojian-android zhenguojian-android arm64-v8a APK 和 SHA256

检查任务(checks)不阻断出包;暂停验证期间的测试结果仅供参考。push 到 main 构建成功后自动创建 GitHub Release(tag 为 v<版本>-<构建号>),可直接在 Releases 页下载 APK。

Android 正式发布签名在仓库 Secrets 配置:

Secret 内容
ANDROID_KEYSTORE_BASE64 签名文件(PKCS12 / JKS)Base64
ANDROID_KEYSTORE_PASSWORD 签名文件密码
ANDROID_KEY_ALIAS 密钥别名
ANDROID_KEY_PASSWORD 密钥密码
ANDROID_KEYSTORE_TYPE 可选,签名文件类型(如 PKCS12),未设置时自动识别

未配置时生成预览(debug 签名)APK,不同构建机的预览签名可能无法相互覆盖。

开发与构建

Flutter 3.32.8、Dart 3.8+、Go 1.24.1+、Python 3.10+。Android 需要 JDK 17、SDK 36、NDK 28.2.13676358。

构建脚本对子进程默认设置 GOPROXY=https://goproxy.cn,direct、GOSUMDB=off,不改全局配置;同名环境变量可覆盖。

python3 scripts/build_android.py            # 红果版,可加 --abi arm64-v8a --cn-mirrors
python3 scripts/build_android.py --all-sources

国内构建可使用 --cn-mirrors / -ChinaMirrors:Flutter/pub 使用 storage.flutter-io.cn / pub.flutter-io.cn,Android 依赖优先阿里云镜像;仅作用于本次构建,结束后恢复原锁文件与临时 Gradle 配置。

首次本地调试先编译对应平台的 Go 核心:

python3 scripts/build_native.py --platform android --abi arm64-v8a
flutter pub get --enforce-lockfile
flutter run

调试全站源版时给 build_native.py 加 --all-sources,并用 flutter run --dart-define=ALL_SOURCES=true;脚本会同步设置 Dart 常量和 Go 编译参数,应用启动时检查二者是否一致。

产物在 dist/android,红果版以 hongguojian- 开头,全站源版以 zhenguojian- 开头,均附 SHA256SUMS。

功能 TODO

对照旧短剧库(../短剧库、../果果剧库)的功能清单。"两版"指默认红果鉴与全站源真果鉴。Android 手机为首要平台,Android TV 其次;Windows 与 iOS 端已按需求移除。

优先修复:分页、资料与数据边界(已实现,待集中验证)

编号 范围 说明 待验证要点
P1-R1 两版 总目录与分类保存实际 offset、会话、设备标识、分页签名及最后 ID,与目录同快照落盘 重启续载、会话过期、重叠页、分类独立续载
P1-R2 两版 移除 6000 条和 500 页静默上限,按 ID 合并持久保存;32 MiB 保存限制明确报错 第 6001 条、第 501 页、重启、跨分类去重
P1-R4 两版 详情字段补齐并贯通 Go / Dart 资料;详情与播放通知同 ID 列表及失败海报 跨页面回写、同 URL 失败重试、旧缓存
P1-R5 全站源版黄豆 优先识别明文 JSON 再走 AES 解码,保留 gzip 兼容与长 ID 明文、密文、异常载荷
P1-R7 两版 下载索引加载失败禁止迁移重写,保留原文件 损坏 / 超大索引、写盘失败、迁移中断
P1-R8 两版 目录及站源记录写入失败传回页面并标明未保存,提供重试 文件冲突、空间 / 权限失败、重启
P1-R9 两版 区分首次启动与配置损坏;异常锁定访问,提供导出与管理员验证恢复 访客 / 管理员损坏、冷启动、恢复流程
P1-R10 两版 用户设置与记录检查保存结果,失败回滚快照,无法确认时锁定 写入失败、恢复中断、用户隔离、重启一致性

功能完善

编号 功能 状态与待验证内容
P1-4 黄果 AI 播放恢复 外部连接阻塞:目录与已知入口在当前开发网络超时,需可通的入口与密钥 / 媒体链路后再验证真实播放
P1-6 红果分类推荐 已实现待验证:推荐游标、会话与去重记录持久化,失败保留当前内容
P1-7 排序与完整资料 已实现待验证:排序 / 筛选在标题栏,资料字段跨站透传
P2-8 资料字段与 VIP 三态 已实现待验证:未知 / 免费 / VIP 三态,未知不覆盖已知,站源管理支持分批补齐
P2-9 Emby 导出完善 已按 2026-10-02 要求随 FFmpegKit 一并移除;下载与离线播放保留
P2-10 播放偏好与全屏交互 已实现待验证:画质 / 倍速 / 连播按用户保存进备份,全屏选集与键盘规则
P2-11 资料失败后继续推进 已实现待验证:失败重试时间与扫描位置持久化,404 冷却与退避
P3-1 网络与资源设置 已实现待验证:直连 / 自动 / 手动代理、目录并发与间隔,各平台代理与在途切换
P3-2 局域网追剧与续播同步 已实现待验证:自动发现、HTTPS 直连、增量合并与手动双向同步;各平台真实双端同步
P3-3 局域网推送播放 已实现待验证:复用设备连接推送续播,不传媒体地址、密钥或文件
P3-4 视频画质增强与超分 已实现待验证:此前仅 Windows 桌面端开放,Windows 端移除后暂无开放平台,代码保留
P3-5 Android 画中画 已实现待验证:系统 PiP 接入;TV 未接入系统级画中画

旧项目的 Docker / HTTP 服务、浏览器注册与远程账号、跨设备服务端记录、在线 STRM 签名网关和远程 Emby 定时同步依赖常驻服务器,不作为本 App 的目标功能;对应能力是设备内用户与备份、原生播放器,以及不依赖服务器的局域网直连。

源码同步与恢复

每次完成开发、修复或文档修改后执行 python3 scripts/finish_task.py --message "本次实际完成的变更",将干净源码同步到同级 ../guoapp 镜像并生成 真果·鉴-YYYYMMDDHHMM.zip 纯源码压缩包(不含 SDK、依赖目录、缓存与构建产物)。源码恢复以版本号、源码压缩包和本 README 为依据。同步规则由 scripts/sync_source.py 维护,可用 --check 校验一致性。

许可证与组件

播放器使用 media_kit / libmpv。开发验证使用系统 FFmpeg 生成测试媒体,仅限开发环境,用户不用另装。

About

红果鉴 / 真果鉴 支持安卓6.0

Resources

Stars

370 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages