Compare commits

...
3 Commits
Author SHA1 Message Date
余生 f2ea05ce91 Release notes for Entryway 0.8.2 2026-04-26 13:15:17 +08:00
余生 400b588f82 Release Entryway 0.8.1 2026-04-23 18:18:26 +08:00
YuSheng e73631b2eb Update README.md 2026-03-28 20:37:47 +08:00
2 changed files with 108 additions and 67 deletions
+6 -67
View File
@@ -16,6 +16,12 @@
---
## 最新版本 | Latest Release
- **v0.8.1**:优化首页和服务器详情页加载速度,媒体库先展示前 6 个后异步补齐完整列表,精选轮播背景图优先展示、Logo 后补
- **APK**[`entryway-debug-0.8.1.apk`](https://github.com/JackYucongjia/Entryway_Release/releases/download/v0.8.1/entryway-debug-0.8.1.apk)
- **变更日志**[`RELEASE_NOTES.md`](RELEASE_NOTES.md)
## 概述 | Overview
**Entryway** 是一个面向自建媒体服务器用户的 Android 客户端,核心设计理念是 **多服务器聚合**——在一个统一的界面中管理和浏览你所有的 Jellyfin / Emby 服务器。
@@ -73,41 +79,6 @@ Entryway is an Android client designed for self-hosted media server users. Its c
- 季度/剧集批量下载,下载前显示存储空间预估
- 无网络时自动切换到离线内容模式
## 项目架构 | Architecture
```
entryway/
├── app/ # Android 应用层
│ ├── ui/
│ │ ├── activity/ # EntryWayActivity(主入口)
│ │ ├── screens/
│ │ │ ├── dashboard/ # 首页、搜索、设置
│ │ │ │ ├── home/ # Dashboard + FeatureTab + 类目翻译
│ │ │ │ └── settings/
│ │ │ ├── servers/ # 服务器列表、管理、切换
│ │ │ ├── detail/ # 影片详情页
│ │ │ └── player/ # 双引擎播放器
│ │ │ ├── PlayerScreen # 播放器主界面 + 手势
│ │ │ ├── PlayerViewModel # 播放状态、引擎管理
│ │ │ ├── ControlsOverlay # 控制覆盖层 UI
│ │ │ └── MpvPlaybackEngine # mpv 引擎封装
│ │ ├── theme/ # Material 3 主题(支持深色/浅色)
│ │ └── splash/ # 启动页
│ └── util/ # 图片加载、日志
├── data/ # 数据层
│ ├── api/ # Jellyfin / Emby API 客户端
│ ├── model/ # 数据模型(BaseItemDto 等)
│ ├── repository/ # AuthRepository, MediaRepository
│ ├── preferences/ # AppPreferences, NetworkPreferences
│ └── network/ # 网络模块、连接检测
└── core/ # 核心工具层
├── auth/ # 认证状态管理
├── player/ # PlayerState、引擎类型、编解码器偏好
└── detail/ # 编解码器能力检测(HDR/Dolby/Spatial
```
## 技术栈 | Tech Stack
| 类别 | 技术 |
@@ -120,38 +91,6 @@ entryway/
| **存储** | SharedPreferences + DataStore |
| **构建** | Gradle 9.4, AGP, KSP |
## 构建 | Build
### 前置要求
- Android Studio (最新稳定版)
- JDK 17
- Android SDK API 36
### 构建步骤
```bash
# 克隆
git clone https://github.com/JackYucongjia/Entryway_Release.git
cd Entryway_Release
# 构建 Debug APK
./gradlew :app:assembleDebug
# 输出路径
# app/build/outputs/apk/debug/entryway-debug-*.apk
```
### 安装到设备
```bash
adb install -r app/build/outputs/apk/debug/entryway-debug-*.apk
```
## 贡献 | Contributing
欢迎提交 Issue 和 Pull Request。较大的功能开发建议先开 Issue 讨论范围。
## 许可证 | License
本项目基于 MIT 许可证开源。详见 [LICENSE](LICENSE)。
+102
View File
@@ -0,0 +1,102 @@
# Entryway Release Notes
## v0.8.2 - 2026-04-26
### 手机版更新
- **首页与媒体库视觉重构**:继续向 Hills 风格靠拢,优化首页精选轮播、我的媒体卡片、媒体目录标题入口和列表过渡效果,减少深浅主题切换时的突兀感
- **搜索页体验重做**:将搜索页从海报轮播改为更轻量的文字推荐入口,并限制搜索结果只展示电影和剧集,避免直接展示到单集
- **概览页逻辑修复**:媒体目录概览页恢复为展示电影/剧集层级,不再直接铺开所有最终单集;同时修复浅色主题下排序/筛选弹窗未选中项文字不可见的问题
- **点击热区优化**:首页与目录概览页的影视卡片点击范围扩展到标题区域,减少只点海报才能进入详情的误操作
- **详情页与主题细节修复**:修复剧集详情页分季海报底部异常灰色阴影,并统一部分页面在浅色/深色主题下的背景与文字对比
- **GitHub 版本检查**:设置页版本信息接入 `Entryway_Release` 最新发布检测,当前版本一致时显示“已是最新版”,发现手机版 APK 更新时显示下载按钮并调用系统下载器下载
### TV 版更新
- **新增 Entryway TV 正式模块**:引入独立 `tv-app`,包名为 `com.entryway.tv`,不再复用手机版布局外壳,保留 OpenEmby TV 界面致谢并接入 Entryway 播放链路
- **TV 登录与服务器录入**:首次启动支持同局域网手机扫码录入服务器,成功添加后自动进入服务器,并保留服务器切换与新增入口
- **客厅端首页与详情体验**:迁移并优化 TV 首页、媒体库、概览页、详情页与遥控器焦点效果,补充 Logo、深色模式标签对比度、继续观看标题格式和媒体库封面展示
- **TV 播放器增强**:接入 Entryway 的 Exo 播放解析链路,并在不破坏 OpenEmby 播放器 UI 的前提下接入 `MpvPlaybackEngine` 作为第二内核,补齐左右键快进快退、进度条、暂停图标、顶部 OSD、菜单呼出、音轨/字幕/内核切换等体验
- **TV 搜索页重做**:新增遥控器全键盘搜索、二维码手机输入、服务器筛选与电影/剧集结果卡片展示,并修复焦点高亮、按钮裁切和浅色文字可读性问题
- **TV 首页加载优化与缓存兜底**:首页先展示轻量媒体库列表,再异步加载前几个库和完整库内容;完整刷新成功后写入本地缓存,网络异常时优先用缓存兜底
- **TV 品牌与更新检测**:应用名、Logo、UA、`X-Emby-Client` 与版本检查均切换为 Entryway TV,并指向 `Entryway_Release` 的 TV 版 APK
### APK
- 手机版:`entryway-debug-0.8.2.apk`
- TV 版:`Entryway-tv-debug-0.8.2.apk`
### 构建信息
- `versionName`: `0.8.2`
- `versionCode`: `25`
## v0.8.1 - 2026-04-23
### 首页与服务器详情页加载优化
- **媒体库两段式加载**:首页和服务器详情页先快速展示前 6 个媒体库,随后后台异步补齐完整媒体库列表,避免首屏等待过久或后续媒体库完全不显示
- **精选轮播提速**:精选轮播不再强制等待 Logo 与背景图全部解析完成;背景图可用后即展示内容,Logo 后续加载补齐
- **轮播兜底展示优化**:当条目没有 Logo 或 Logo 加载较慢时,使用片名文字兜底,减少空白骨架停留时间
- **图片预取降噪**:收紧首页图片预取并发和首批预取数量,降低进入首页时的网络与解码竞争,让关键内容优先加载
- **精选数据轻量化**:精选轮播请求数量从 10 条缩减为 6 条,减少随机推荐和首屏图片解析成本
### 播放与调试链路收敛
- **起播诊断写盘关闭**:默认关闭 debug 包中的播放诊断文件写入,避免起播阶段产生额外 I/O
- **既有播放修复保留**:延续 v0.8.0 的 NextEmby 稳定流入口、认证参数补齐、Exo 外挂字幕修复和字幕浮窗文案修正
### 构建信息
- `versionName`: `0.8.1`
- `versionCode`: `24`
## v0.8.0 - 2026-04-23
## ▶️ 播放链路与 NextEmby 兼容性增强
- **起播请求精简**:生产环境移除额外的 `getPlaybackInfoRaw()` 诊断请求,减少起播时无意义的接口往返
- **详情快照复用**:详情页、下载页和投屏链路优先复用已有 `BaseItemDto`,显著降低播放器兜底 `getItemById()` 的触发频率
- **Emby 稳定流入口**Emby / NextEmby 播放改为优先使用稳定的 `Videos/{id}/stream` 入口,并保留认证信息,避免被服务端识别为无效身份预加载
- **熔断快速止损**:识别 `请重新登录``禁止回源``防穿透` 等 NextEmby 熔断信号后立即停止放大重试,减少短时间重复请求
## 💬 外挂字幕与播放器可用性修复
- **Exo 外挂字幕修复**:外置字幕改为优先使用标准 `Videos/.../Subtitles/.../Stream.xxx` 地址,并对 `ass/ssa/subrip` 做更稳的格式请求策略
- **mpv 外挂字幕支持**:新增 mpv 运行时外挂字幕注入,补齐此前部分 `srt/sub/ass` 无法显示的问题
- **字幕入口统一鉴权**:Exo 与 mpv 的外挂字幕链路统一补足服务端可识别的鉴权参数,避免字幕流单独失败
## 🗂️ 详情页与目录体验优化
- **媒体目录排序修复**:首页和服务器卡片进入的详情页,季列表和剧集目录会跟随用户默认排序偏好,不再退回 Emby 全局默认顺序
- **播放器浮窗文案修正**:字幕切换浮窗现在正确显示“X 个字幕”,不再误用音轨数量文案
## 🛠️ 构建与环境稳定性
- **Gradle JDK 固定**:在项目级固定 `org.gradle.java.home`,修复 Gradle 偶发误用不完整 JRE 导致的 `jlink` 构建失败
- **调试包重新发布**:本次版本升级为 `0.8.0``versionCode` 提升至 `23`
## 🎨 UI 逻辑整体重构
- **多服务器架构**:首页(Home)改为动态服务器切换器,服务器详情页(Server Detail)使用静态头部,两者职责分离
- **私有服务器支持**:新增服务器访问控制,支持标记私有服务器,元数据(`isPrivate``displayName`)通过 `upsertSavedServer()` 持久化
- **导航栏优化**:非 Home/Detail 页面强制显示底部导航栏,修复 FAB 定位和标题在浅色/深色模式下的可见性问题
## 🔗 修复 302 重定向播放问题
- **Nextemby / Redia CDN 直连播放**:全面适配 Nextemby 反向代理的 302 重定向机制,实现 STRM 文件通过 CDN 加速的直连播放
- **Auth 认证修复**:将所有 API 请求的认证前缀从 `Emby` 统一为 `MediaBrowser`,匹配 Nextemby 的拦截要求
- **PlaybackInfo 改为 POST**:使用 POST 请求 + DeviceProfile 请求体获取播放信息,与官方客户端行为一致
- **取消 URL 预探测**:移除播放前的 URL 探测逻辑,直接将流媒体 URL 传递给 ExoPlayer,由播放器自行处理 302 重定向,与 NipaPlay 等成功客户端的实现方式对齐
- **身份验证参数**:在流媒体 URL 中携带 `UserId``MediaSourceId`,确保 Nextemby 能正确识别用户身份
## 🎬 修复 4K 高码率视频播放闪退问题
- **内存溢出修复**:修正 ExoPlayer 缓冲策略,将 `prioritizeTimeOverSizeThresholds``true`(时间优先)改为 `false`(大小优先),并设置 150MB 内存缓冲上限,防止 80Mbps+ 4K 视频因缓冲过大导致 OOM 崩溃
- **协程生命周期修复**:修复播放器界面位置更新协程在 ExoPlayer 释放后仍运行导致的 `CoroutinesInternalError` 崩溃
- **CDN 连接增强**:优化 HTTP 客户端配置,增加读取超时(60s)、启用连接失败自动重试、配置连接池(4连接/5分钟保活),提升大文件流媒体播放的连接稳定性
## 📋 其他改进
- 播放器位置更新频率从 100ms 调整为 250ms,降低 CPU 占用
- 优化服务器列表管理逻辑,支持服务器显示名称自定义