Han1meViewer-Remastered

Introduction: Han1meViewer 社区重制维护版
More: Author   ReportBugs   
Tags:

⚠️ 临时镜像仓库说明

本仓库(Han1meViewer-Remastered-Org/Han1meViewer-Remastered)是临时镜像。主仓库 5APU-A340/Han1meViewer-Remastered 所属的 GitHub 账号 5APU-A340 目前被 GitHub 暂停(原因:短时间内使用官方 gh CLI 批量操作触发自动风控,正在申诉中),账号被暂停期间该仓库对所有人(包括仓库所有者本人)不可见,因此临时在维护者的另一个可用账号下创建本组织与本仓库,仅同步发布最新版本(v1.1.4)的源码与预编译产物,保证用户在此期间仍能获取最新版应用。

从 v1.1.3 起,应用内的更新检测和公告拉取新增了自动兜底逻辑:优先请求主仓库,请求失败(如账号被暂停期间)才会改请求本临时仓库;主账号一旦恢复,下一次检测会自动优先切回主仓库,无需用户或维护者手动干预。

  • 主账号 5APU-A340 申诉解封后,本仓库将:
    1. 归档(Archive)本仓库,停止更新;
    2. 将本仓库积累的 star 数、Issue 引导迁移/合并回主仓库(GitHub 不支持跨仓库自动合并 star/issue,届时会在主仓库和本仓库分别发公告说明具体操作方式,并尽量对本仓库的贡献者/关注者致谢);
    3. 后续所有开发都会回到主仓库 5APU-A340/Han1meViewer-Remastered 进行。
  • 如果你现在看到的是本仓库,建议以主仓库地址为准持续关注:https://github.com/5APU-A340/Han1meViewer-Remastered

本仓库是 misaka10032w/Han1meViewer 的社区续作。

为什么会有这个仓库

2026 年 7 月,原仓库作者发布了一则公告(原文链接):由于部分用户对功能取舍和开发方向存在较大分歧,且未能达成有效沟通,作者决定不再为该项目提供后续更新,将仓库归档,并删除了此前所有已编译发布的产物,只留下源码供有需要的人自行下载修改编译。公告落款是简短的一句「有缘再见」。

我们充分尊重原仓库作者的决定,也不会对作者的选择做任何负面评价——长期独自维护一个有一定体量的开源项目本身就充满压力和不易,这份辛苦值得理解。

仓库归档、发行版被清空后会带来几个实际问题:

  • 已安装用户无法再获得后续修复和适配更新,随着目标网站或系统环境变化,应用可能会逐渐无法正常使用。
  • 新用户没有现成的编译产物可以下载,必须自己配置 Android 开发环境从源码编译才能使用。
  • 原仓库不再接受 Issue / PR,功能反馈和 Bug 修复没有了归宿。

为了解决上述问题,我基于原始源码创建了本 Remastered 仓库:

  • 保留完整的原始提交历史和源码,不隐藏、不篡改上游的工作。
  • 提供可直接安装的编译产物(Release 页面),不再要求每个用户自行搭建编译环境。
  • 因原作者已明确停止维护并归档仓库,本仓库使用独立的应用签名和独立的包名(com.han1meviewer.remastered),与原版互不冲突,可与原版共存安装,也避免了以原开发者身份签名发布的问题。
  • 继续接受 Issue 和 PR,后续视社区需求决定是否继续演进功能。

⚠️ 本仓库与原作者、原仓库无隶属关系,也不代表原作者的意见;如原作者有异议,请通过 Issue 联系,我会尊重原作者意愿处理本仓库。

📌 当前同步状态

本仓库已发布最新版本,版本号规则不再跟随原仓库,独立编号(当前发行 tag:v1.1.4-remastered+26080607)。以下是各版本的主要改动:

v1.1.4

  • 新增视频卡片发行日期展示:卡片好评率同一行追加日历图标+相对发行时间,默认开启,设置中可关闭;系列影片弹窗额外展示播放量。
  • 新增观看历史/收藏清单搜索:观看历史页(本地/在线 Tab 各自独立)与收藏、稍后观看等清单页新增搜索框,默认开启,设置中可关闭。
  • 新增首页搜索框个性文字开关:关闭后固定显示普通提示语,不再随机展示趣味文案。
  • 前端体验修复:修复视频卡片在没有发行日期时作者名被一并丢失、显示成占位文字"作者"的问题;上述搜索功能激活时不再触发无意义的自动翻页;移除签到数据库的破坏性迁移兜底,避免版本升级迁移逻辑漏写时静默清空本地签到数据;设置页调整开关后,已打开的页面能立即生效,不需要再退出重进;视频卡片列表滚动时不再每张卡片单独查询一次设置项,减少不必要的性能开销。
  • 网络层稳定性修复:修复 Cloudflare 验证并发请求下的线程永久阻塞风险(关闭验证页/超时都能正确释放等待中的请求);下载现在会正确经过用户配置的代理;补齐了几处代理失败重试、网络设置变更后部分接口仍用旧配置、Cookie 存储并发安全等问题。
  • Cloudflare 验证加固:修正老旧内核 WebView 版本误判问题,验证长时间未完成时会提示改用手动导入 Cookie,手动导入的 Cookie 会校验有效性,修复手动导入 UA 后登录/播放页面 UA 不一致导致的二次校验失败。
  • 新增"诊断信息"页面(设置 → 其他 → 诊断信息):一键查看系统、设备、内核、WebView、网络代理等信息,并支持一键复制,方便反馈问题时附上。

v1.1.0

  • 应用内"关于"页面改为可点击,展示独立的关于说明与鸣谢信息(含完整的上游 Fork 链路署名)。
  • 应用内检查更新功能修复(本地构建无 GitHub Token 时不再误发空 Authorization 头导致 401),并支持按发行 tag 中的 +<versionCode> 或语义化版本号回退比较。
  • 公告系统迁移出原作者的 Firebase 实时数据库(本仓库无写入权限),改为读取本仓库托管的 announcements.json(经 GitHub Contents API),并支持点击后跳转公告链接。
  • 修复视频详情页"评论"Tab 计数徽标与标题文字重叠的显示问题。
  • 针对鸿蒙(非 NEXT,3.2+)及老旧 Android/WebView 设备的 Cloudflare 验证做了增强:改进内置验证的完成检测(轮询 cf_clearance cookie),并新增"手动导入 Cookie + User-Agent"作为兜底通道。

v1.1.1 / v1.1.2

  • 修复关闭首页公告后 24 小时内无法再查看、也会错过新公告发布的问题;公告拉取改为按固定间隔自动刷新(默认 6 小时,设置中可调 3/12/23 小时或关闭)。
  • 左侧菜单新增"公告"入口,随时可手动查看当前有效公告,不受拉取间隔限制。

v1.1.3

  • 更新检测与公告拉取新增双源兜底:主仓库不可达时自动改查本临时仓库,主账号恢复后自动优先切回,见上方说明。
  • 新增首次启动统计授权弹窗:默认不采集任何数据,需用户在弹窗中明确同意后才会开启 Firebase Analytics;设置中可随时更改。
  • 新增"开发路线投票"功能:首页可能弹出投票,参与投票帮助决定后续更新方向和频率,同一投票每台设备只展示、只能提交一次,详见下方开发路线投票说明

后续的维护和优化工作会持续围绕本 Remastered 版本的代码推进,具体进展请关注本仓库的提交记录和 Release 页面

⚠️ 包名、签名与遗留信息说明

  • 本仓库编译产物均使用独立包名(com.han1meviewer.remastered)和独立签名密钥签名,与原版应用互不冲突、可共存安装;这把签名密钥仅由本仓库维护,与原作者的签名无关。
  • 应用内展示的关于 / 鸣谢信息现为本仓库独立维护的内容,其中完整说明并链接了上游署名:本仓库直接 Fork 自 misaka10032w/Han1meViewer,该项目又最初 Fork 自原作者 YenalyLiew/Han1meViewer
  • 应用内置的公告功能现读取本仓库维护的 announcements.json,与原仓库无关;历史版本(v1.0.0 及更早重新编译版本)仍读取原仓库使用过的数据源,仅供兼容旧版本使用。

📥 下载

预编译 APK 见本仓库 Releases 页面。每个版本均提供以下变体,覆盖不同设备架构:

  • arm64-v8a / armeabi-v7a / x86 / x86_64:仅含对应架构 so 库,安装包更小,按设备架构选择安装。
  • universal:包含全部架构,适用于不确定设备架构或需要通用安装包的场景。

除最新版本外,还补充重新编译了原仓库归档前最后几个正式版本,方便需要旧版本的用户下载:

这些历史版本均为源码原样重新编译,仅做了签名、包名和依赖镜像等构建层面的必要调整,不包含任何功能性修改。

均为 Release 版,已用本仓库独立签名密钥签名。如需未签名的调试版本,可查看最新版本对应 Release 中的 Debug 包。

其他下载渠道:原仓库(misaka10032w/Han1meViewer)已归档且发行版已清空,若需要原始未修改版本,可参考第三方镜像站点,例如 SourceForge 镜像(第三方维护,与本仓库无关,请自行甄别可信度)。


🚫 请不要在任何公开平台宣传本软件

本软件不接受任何形式的公开宣传。若出现公开宣传、搬运或引流,仓库维护者可能随时归档或隐藏仓库,并删除已编译的发行版。

🌸 Han1meViewer

🔞 R18 警告:未满 18 岁禁止下载和使用。

Han1meViewer 是一个使用 Kotlin 开发的 Android 客户端,用于浏览、搜索、播放和管理 hanime 相关公开视频页面内容,围绕视频浏览、详情播放、搜索、用户列表、下载管理、评论、订阅、设置和隐私保护等功能组织。技术架构、构建方式和贡献指南见 README_TECH.md

本应用没有任何官方网站。GitHub Release 与 CI 构建产物是唯一下载及更新渠道。

📜 项目来源与许可

此项目最初 Fork 自 YenalyLiew/Han1meViewer,感谢原作者的贡献。原项目采用 Apache License 2.0

根据 Apache 2.0 许可证要求:

  • 保留原版权声明。
  • 包含许可证文件副本。
  • 说明修改内容。

原始仓库:YenalyLiew/Han1meViewer

许可证文件:LICENSE

⚠️ 免责声明

本应用程序与 https://hanime1.me/ 及其关联方无任何隶属、合作或授权关系。

🔍 数据来源:

  • 本应用仅通过常规网络请求和 HTML DOM 解析获取目标网站公开显示的信息。
  • 本应用不访问网站后端数据库。
  • 本应用不进行注入攻击、绕过授权或获取非公开用户隐私数据。

⚖️ 使用限制:

  • 本应用仅用于技术研究、学习交流和移动端体验优化。
  • 本应用不提供商业化服务。
  • 使用者应自行遵守所在地区法律法规和目标网站规则。

©️ 版权归属:

  • 原始视频、图文和相关内容版权归 https://hanime1.me/ 或原始制作、发行方所有。
  • 本应用不存储版权内容,不修改原始内容,不声称拥有内容所有权。

🛡️ 责任豁免:

  • 本应用不保证数据完整性、准确性和实时性。
  • 使用本应用产生的一切后果由用户自行承担。
  • 不得将本应用用于任何非法用途。

https://hanime1.me/ 认为本应用行为不当,可通过 GitHub 仓库内置功能联系维护者。

🔄 最后更新日期:2026-05-23

ℹ️ 建议通过官方渠道支持原站内容,并点击广告以支持网站运营者。

💬 参与讨论

原项目 Telegram 群组:https://t.me/Han1meViewer,本重制版项目暂不设置任何讨论群组,若有需求或问题请在 Issues 中反馈。

✨ 功能概览

  • 🏠 首页浏览:支持首页推荐、最新上传、分类入口、预览页和搜索入口。
  • 🎬 视频详情:支持简介、作者、标签、系列视频、相关推荐、评论和子评论。
  • ▶️ 视频播放:支持在线播放、本地下载文件播放、画中画、播放内核切换、倍速和画质选择。
  • 🔍 搜索系统:支持关键词搜索、高级搜索、历史记录、筛选条件展示和分页加载。
  • 👤 用户内容:支持收藏、稍后观看、播放列表、在线历史、订阅作者和创作中心。
  • 💬 评论系统:支持评论排序、回复查看、举报和复制分享文本。
  • 📥 下载管理:支持后台下载、下载分组、导入本地文件、自定义下载目录和下载后播放。
  • 🔐 账号能力:支持登录、手动录入 cookies、账号资料、头像裁剪、登录状态检测和退出登录。
  • 🎨 主题与设置:支持 Material 3 主题、动态颜色、首页布局、播放设置、MPV 设置、下载设置和网络设置。
  • 🕵️ 隐私保护:支持应用锁、启动器图标伪装和手动 Cookie 管理。
  • 🌐 网络辅助:支持 Cloudflare 处理(内置验证轮询检测 + 手动导入 Cookie/UA 兜底,适配鸿蒙 3.2+/老旧 WebView 设备)、备用域名、代理相关设置、CDN/网络检测和更新检查。
  • 🩺 诊断信息:一键查看系统/设备/内核/WebView/网络代理等信息并支持复制,方便反馈问题时附上(设置 → 其他 → 诊断信息)。
  • 📅 健康打卡:内置冲了么打卡页面和桌面小组件。
  • 🎯 共享关键 H 帧:支持内置关键帧数据读取、设置和共享数据展示。
  • 🗞️ 公告系统:支持首页公告展示、公告详情弹窗(含可跳转的操作链接),数据源为本仓库托管的 announcements.json
  • 🗳️ 开发路线投票:首页可弹出投票参与开发方向/频率决策,配置来自本仓库托管的 polls.json,提交与计票经 Firebase Realtime Database。

首页公告默认会自动拉取展示,用户关闭后 24 小时内不会再自动弹出;随时可通过左侧菜单的"公告"入口手动查看当前有效公告。公告数据维护方式和字段说明见 README_TECH.md 第 13 节

🗳️ 开发路线投票说明

v1.1.3 起新增的功能。投票配置与公告一样走 GitHub Contents API 双源读取(GET /repos/.../contents/polls.json,见 PollRepository.fetchActivePolls()),提交投票与计票则通过 Firebase Realtime Database 完成(见 PollRepository.submitVote()):

  • 应用启动时会拉取 polls.jsonisActive = true 的投票,弹出首个用户还未处理过的投票。
  • 用户选择选项并提交后,会向 pollVotes/{投票 ID}/{设备随机 ID} 写入所选项,并对 pollResults/{投票 ID}/{选项 ID} 计数 +1;数据库安全规则保证同一设备对同一投票只能成功提交一次,重复提交会被拒绝。
  • 设备 ID 是本地随机生成并持久化的匿名标识,不是任何真实设备标识(非 IMEI / 广告 ID 等),仅用于投票去重。
  • 无论用户是提交了投票还是直接关闭弹窗,该投票都会被标记为"已处理",不会再次展示。
  • 投票结果可在 Firebase 控制台的 Realtime Database 数据页面查看 pollResults/{投票 ID} 下各选项计数。

维护步骤:编辑仓库根目录下的 polls.json,新增投票对象(id 每次发起新投票需换新值,不要复用旧 id)、推送到 main 分支即可生效;结束的投票建议将 isActive 置为 false

📷 截图预览

不提供截图预览。

📈 Star 趋势

Star History Chart

🤝 参与贡献

欢迎提交 Issue 和 PR。项目架构、技术栈、构建环境、本地运行步骤和代码约定见 README_TECH.md

📄 许可证

本项目继承原始项目的 Apache License 2.0。主要条款包括:

  • 允许商用、修改和分发。
  • 要求保留版权声明和许可证文件。
  • 要求提供修改说明。
  • 不提供质量担保。
  • 不承担用户使用风险。

完整条款请参阅项目根目录下的 LICENSE 文件。

Apps
About Me
GitHub: Trinea
Facebook: Dev Tools
AI Daily Digest