本软件不接受任何形式的公开宣传。若出现公开宣传、搬运或引流,仓库维护者可能随时归档或隐藏仓库,并删除已编译的发行版。
🔞 R18 警告:未满 18 岁禁止下载和使用。
Han1meViewer 是一个使用 Kotlin 开发的 Android 客户端,用于浏览、搜索、播放和管理 hanime 相关公开视频页面内容。当前项目以 Jetpack Compose、Navigation Compose、ViewModel、StateFlow、Retrofit、Jsoup、Room、WorkManager、Media3/JZVD/MPV 为主要技术栈,围绕视频浏览、详情播放、搜索、用户列表、下载管理、评论、订阅、设置和隐私保护等功能组织。
本应用没有任何官方网站。GitHub Release 与 CI 构建产物是唯一下载及更新渠道。
此项目最初 Fork 自 YenalyLiew/Han1meViewer,感谢原作者的贡献。原项目采用 Apache License 2.0。
根据 Apache 2.0 许可证要求:
许可证文件:LICENSE
本应用程序与 https://hanime1.me/ 及其关联方无任何隶属、合作或授权关系。
🔍 数据来源:
⚖️ 使用限制:
©️ 版权归属:
https://hanime1.me/ 或原始制作、发行方所有。🛡️ 责任豁免:
若 https://hanime1.me/ 认为本应用行为不当,可通过 GitHub 仓库内置功能联系维护者。
🔄 最后更新日期:2026-05-23
ℹ️ 建议通过官方渠道支持原站内容,并点击广告以支持网站运营者。
Telegram 群组:https://t.me/Han1meViewer
HanimeAnnouncementManagerWebUI 维护 Firebase Realtime Database 中的 announcements 节点。公告系统分为两部分:
MainViewModel.loadAnnouncements() 从 Firebase Realtime Database 读取 announcements 节点,首页会展示有效公告,并可点开公告详情弹窗。HanimeAnnouncementManagerWebUI 用于维护公告数据,负责向同一个 announcements 节点写入、更新或下线公告。HanimeAnnouncementManagerWebUI 目录包含两个文件:
HanimeAnnouncementManager.html:公告管理网页,用于增删改查公告、切换启用状态。PermitAdmin.py:给 Firebase Auth 用户写入 isAdmin 自定义声明,用于控制谁能访问管理端。前置条件:
announcements 节点下的公告数据结构需要和 Announcement 模型一致,至少包含 title、content、isActive 等字段。priority 排序,只有 isActive = true 的公告才会显示。PermitAdmin.py,还需要 Firebase Admin SDK 的 serviceAccountKey.json。使用规则:
last_dismiss_time,24 小时内不会再次自动弹出。管理端使用步骤:
HanimeAnnouncementManager.html 中填写 firebaseConfig。ADMIN_EMAIL 和 ADMIN_PASSWORD 中填入可登录 Firebase Auth 的管理员账号。announcements 节点。firebase-admin,准备 serviceAccountKey.json,再运行 PermitAdmin.py 并填写目标用户 UID。公告字段说明:
title:公告标题。content:公告正文。imageUrl:公告图片地址,可选。positiveText:确认按钮文案,可选。negativeText:取消按钮文案,可选。priority:排序优先级。timestamp:公告时间戳,单位为秒。isActive:是否启用。维护建议:
isActive = true。




📦 项目采用多模块 Gradle 结构:
:app:主应用模块,包含界面、导航、业务 ViewModel、网络解析、数据库、下载 Worker、播放器和资源文件。:yenaly_libs:项目内公共基础库,封装通用 Activity、Fragment、ViewModel、偏好设置、工具类和基础组件。buildSrc:构建配置辅助代码,用于版本号、构建类型和提交信息等 Gradle 逻辑。🗂️ 主应用采用分层组织:
ui.activity:入口 Activity、登录、Cloudflare 处理和手动 Cookie 输入页面。ui.navigation:Navigation Compose 路由定义、主导航、设置导航和安全跳转封装。ui.screen:Compose 页面实现,按首页、搜索、视频、设置、账号、下载等业务域划分。ui.component:可复用 Compose 组件,如视频卡片、弹窗、空/错/加载状态、AppBar、评论卡片等。ui.viewmodel:页面状态和业务动作入口,主要通过 StateFlow / SharedFlow 对 UI 暴露状态。logic.network:Retrofit Service、OkHttp 拦截器、DNS、CookieJar、更新服务和网络入口。logic.model:页面和网络解析后的领域模型,如 HanimeVideo、HanimeInfo、HomePage、Playlists 等。logic.dao / logic.entity:Room 数据库、DAO 和实体,用于历史、下载、搜索历史、关键帧、打卡等本地数据。announcement 链路:公告数据从 Firebase Realtime Database 的 announcements 节点读取,首页通过 MainViewModel.loadAnnouncements() 拉取并展示,管理端使用 HanimeAnnouncementManagerWebUI 维护公告内容。worker:WorkManager 下载任务和更新任务。util:主题、网络、文件、权限、Cookie、Toast、视频和通用工具方法。🔁 整体数据流:
Compose Screen -> ViewModel -> NetworkRepo / DatabaseRepo -> Retrofit + Jsoup / Room -> StateFlow -> Compose Screen
🎞️ 视频页数据流:
VideoRoute -> VideoViewModel -> NetworkRepo.getHanimeVideo -> Parser -> HanimeVideo -> VideoScreen / Player / CommentScreen
📥 下载数据流:
DownloadScreen -> DownloadViewModel -> HanimeDownloadManagerV2 -> WorkManager Worker -> Room -> Flow -> UI
✅ 推荐环境:
37。27。37。📌 关键版本以仓库文件为准:
gradle.propertiesgradle/libs.versions.tomlapp/build.gradle.ktsbuildSrc/src/main/java/Config.ktbash
git clone https://github.com/misaka10032w/Han1meViewer.git
使用 Android Studio 打开项目根目录。
等待 Gradle Sync 完成。
选择 debug 变体运行到设备或模拟器。
💻 常用命令:
./gradlew :app:compileDebugKotlin
./gradlew :app:assembleDebug
🪟 Windows PowerShell:
.\gradlew.bat :app:compileDebugKotlin
.\gradlew.bat :app:assembleDebug
🔏 Release 构建需要本地或 CI 提供签名相关环境变量:
KEYSTORE_PASSWORDKEY_ALIAS🔑 GitHub API Token 可通过环境变量或本地文件提供:
HA_GITHUB_TOKENapp/ha1_github_token.txtStateFlow 暴露,事件通过 SharedFlow 或回调传递。Lazy* 列表 key 冲突。LazyColumn、LazyVerticalGrid、LazyRow 使用稳定 key 时应确保数据源唯一。Han1meViewer/
├── app/ 主 Android 应用
│ ├── src/main/java/.../logic 网络、解析、模型、数据库、状态
│ ├── src/main/java/.../ui Activity、Compose 页面、导航、组件、ViewModel
│ ├── src/main/java/.../util 通用工具
│ ├── src/main/java/.../worker WorkManager 任务
│ └── src/main/res 资源文件、主题、布局、图标、小组件
├── yenaly_libs/ 项目内公共库
├── buildSrc/ Gradle 构建辅助代码
├── gradle/libs.versions.toml 依赖版本目录
├── README.md 项目说明
└── README_TECH.md 历史技术说明与部分实现笔记
:app:compileDebugKotlin。Lazy* 列表时,请检查重复 key 风险。.github/PULL_REQUEST_TEMPLATE/submit_h_keyframe.md。本项目继承原始项目的 Apache License 2.0。主要条款包括:
完整条款请参阅项目根目录下的 LICENSE 文件。
| 日期 | 榜单 | 排名 | 周期新增 | 总 STAR |
|---|