README.md

September 8, 2026 · View on GitHub

Bilibili Innocent Lab

稳定版 License 平台 框架 目标 交流群

面向 Android 哔哩哔哩客户端的界面净化与交互增强模块

基于 Xposed / LSPosed、YukiHookAPI 与 KavaRef 构建,作用于官方 Android 客户端 tv.danmaku.bili

下载 Release · 提交问题 · 交流群组


目录

项目简介

Bilibili Innocent Lab 是一个面向 Android 哔哩哔哩客户端的 Xposed/LSPosed 模块。项目的主要目标,是在尽量保持客户端原有视觉结构和操作习惯的前提下,对部分影响使用体验的界面内容进行净化,同时补全评论、视频简介、第三方扩展兼容和版本适配等方面的交互能力。

本模块并不是一个独立的哔哩哔哩客户端,也不会替代官方应用。它以运行时 Hook 的方式加载到目标应用进程中,对特定界面、数据绑定和交互入口进行有限修改。用户仍然使用原有的哔哩哔哩账号、播放器、推荐系统、评论区和视频详情页,只是在模块启用后,可以根据自己的需要开启或关闭相应功能。

项目强调“可选择、低侵入、可恢复”。绝大多数功能都提供独立开关,用户可以只启用自己需要的部分;模块不会要求所有功能必须同时开启。对于实验性功能,设置界面会给出明确提示,便于用户根据当前客户端版本和设备环境自行决定是否使用。

由于哔哩哔哩客户端会持续更新,内部类名、方法签名、布局结构和数据模型也可能发生变化,本项目加入了运行时版本适配、适配结果缓存和手动重新适配机制,尽可能降低客户端升级后功能整体失效的概率。但任何基于 Hook 的模块都无法保证永久兼容所有未来版本,使用前仍建议阅读版本说明和已知问题。

为保证项目稳定维护,请勿将本项目相关内容以包括但不限于以文件,文本,图标,链接,图片,视频,代码等形式在公开的社交媒体进行不定向传播。

本项目为非盈利性项目,不会以任何方式收取软件服务费用,不会以任何方式在未经同意的前提下主动获取并传输您的个人信息,若您怀疑从其他渠道获取的文件与以上宗旨相违背,请务必对照对应版本 Release HASH,若您发现文件 HASH 不一致,则该文件可能经过第三方篡改,本项目无法保证其安全性,若您已知并继续使用,由此带来的一切风险与后果请自行承担。

ROOT 权限特别说明

若可能,请授予本模块 ROOT 权限,以实现以下功能:

  • 保存设置后确认并重新启动哔哩哔哩。
  • 统一诊断中心部分本地诊断内容。

本说明会跟随版本更迭即时修改,始终保证 ROOT 权限使用透明化;项目承诺不会滥用 ROOT 权限进行任何危害宿主设备的行为,详细参见项目最新开源代码。

NPatch 免 Root 支持说明

本模块现已提供实验性的 NPatch 免 Root 支持,可在不使用 Root/LSPosed 的设备环境中,通过 NPatch Manager 将模块加载到经本地修补的哔哩哔哩客户端;该能力是独立的可选兼容路径,不会改变原有 Root/LSPosed 的安装与使用方式。当前要求 Android 9 及以上、NPatch Manager 1.0.7 及以上,并使用本地/管理器模式;请先在 NPatch Manager 中添加并启用本模块,再在模块设置中开启“免 Root 支持(NPatch,实验性)”。

启用后,模块会将当前支持的功能配置同步到 NPatch,并由已修补的哔哩哔哩进程加载对应 Hook。开启、关闭或修改相关设置后,需要手动强制停止并重新打开哔哩哔哩;只有在授权与完整配置校验通过后,目标进程才会安装模块功能,模块界面收到并验证宿主回执后才会显示为已激活。

NPatch 支持仍属于实验性能力,实际稳定性会受到 Android 版本、ROM、NPatch Manager 版本、哔哩哔哩版本及其他注入模块影响,不能视为对所有 Root/LSPosed 场景的完整替代。使用前请自行备份配置,并保留恢复原版应用的能力。


功能介绍

模块将功能拆分为独立开关,用户可以只启用自己需要的部分。界面按「净化」与「增强」分栏,各自末尾提供对应的进阶设置;自由复制及气泡外观集中在增强栏。分类调整保留已有开关值和生效方式,启用宿主功能后通常需要重启哔哩哔哩。若当前客户端版本没有找到足够可靠的适配入口,对应功能会跳过处理并保留宿主原有行为。

界面入口内容
净化 → 净化进阶设置首页、底栏与动态、我的页、播放页、评论区、启动提示;跨页面推荐时长规则单列
增强评论/简介自由复制,复制气泡自动跟随与手动亮色
增强 → 增强进阶设置首页与动态浏览、播放画质与状态栏、评论阅读与交互、完整数字显示
实验性功能 → 外观界面美学、Liquid Glass 背景、SPEC 配色规范、应用语言与桌面图标
实验性功能 → 兼容免 Root 与漫游兼容、预见式返回、重新适配当前版本

完整的功能归属与范围见设置分类说明。下文仍按功能主题介绍具体能力。

🏠 首页与导航

首页顶部栏

功能说明
隐藏首页游戏中心隐藏首页顶部的游戏中心入口,搜索、扫一扫等其他入口不受影响
隐藏搜索推荐词清除搜索框内自动展示的默认推荐词,不影响进入搜索页、输入关键词和正常搜索

首页推荐内容

功能说明
隐藏首页大卡轮播推荐处理首页顶部或推荐区域中占用较大空间的轮播卡片,补全部分环境下失效的轮播净化能力
过滤推荐广告在首页推荐数据进入界面前过滤已识别的广告内容,普通视频推荐不受影响
过滤推荐图文按已适配的数据类型过滤首页推荐流中的图文卡片
过滤游戏推广过滤首页推荐流中能够被明确识别的游戏推广内容
竖屏视频进入详情页从首页打开竖屏视频时优先进入普通视频详情页,避免自动进入竖屏连续播放界面;其他页面的打开方式不受影响

自定义首页结构

功能说明
自定义首页标签按名称填写要隐藏的首页标签,支持逗号、中文逗号、分号或换行分隔多条规则;始终保留至少一个标签,避免启动页和索引失效
自定义首页组件按组件名称或已知标识填写隐藏规则,用于减少不需要的首页功能区域
自定义底栏按名称隐藏底部导航入口;只处理已适配的视觉绑定,不删除宿主的底层页面数据,始终保留至少一个可用入口
推荐视频时长范围可分别设置最短和最长视频时长;低于下限或高于上限的视频会从首页推荐及视频详情页底部推荐中移除,任一边界留空即不限制该边界

🔔 动态页、“我的”页与系统提示

动态页

功能说明
隐藏“同城”标签从动态页标签中移除“同城”,其他标签及原有顺序保持不变
隐藏“校园”标签从动态页标签中移除“校园”,其他标签及原有顺序保持不变
默认显示“视频”标签进入动态页时优先定位到“视频”分类;若当前版本没有对应标签或定位入口,保持宿主默认页面

动态内容过滤

功能说明
按关键词过滤动态动态正文、转发的原动态正文或模块文案中出现任一关键词时隐藏该条动态;每段文本各自匹配,不会因为拼接而跨段误命中
按发布者过滤动态规则里每项写一个 UID 或用户名(用户名需完全一致),命中的发布者的动态(含转发)会被隐藏;无法识别发布者时保留
隐藏带货与推荐附加卡隐藏带有带货卡或“UP 主推荐”附加卡的动态,依据哔哩哔哩下发的附加卡类型判断,不看文案
隐藏未解锁的充电专属动态隐藏没有观看权限的充电专属动态;已解锁的以及读不出权限状态的都保留
隐藏动态页话题栏移除动态列表上方的话题栏,动态内容本身不受影响
隐藏顶部 UP 栏的直播条目把动态页顶部头像栏中正在直播的 UP 主移除,并重排其余条目的位置,不留空位

综合页与视频页共用同一套判据,配置一次两边都生效。删除卡片不影响分页游标,只是当页变短。

搜索

功能说明
隐藏搜索结果推广卡移除综合搜索结果中的商业广告卡与特殊运营卡,普通结果顺序不变
按关键词过滤搜索结果视频结果标题包含任一关键词时隐藏该结果
按发布者过滤搜索结果隐藏名单内发布者的视频结果

后两项只作用于视频卡;番剧、直播、专栏等卡型的字段结构各不相同,不做猜测,保持原样。 搜索框里的推荐词由「隐藏首页搜索推荐词」一并负责,开启后搜索页也不再出现推荐词。

“我的”页

功能说明
隐藏大会员卡片隐藏“我的”页中的大会员卡片,不改动其他菜单与账号信息
保留大会员卡片位置配合“隐藏大会员卡片”使用,在隐藏内容的同时保留原有布局占位,减少页面结构跳动
自定义“我的”页组件按菜单名称填写隐藏规则,可用于精简创作中心、课程、游戏中心等不需要的入口

页面与提示

功能说明
关闭客户端更新提醒阻止哔哩哔哩客户端自身的更新提醒,不影响本模块检查 Stable 或 Preview 更新
关闭青少年模式提醒隐藏青少年模式提示页面,不修改青少年模式的开启状态、限制规则或系统设置
显示完整数字播放量、点赞数等计数优先显示完整数值,减少“万”“亿”等缩写;只处理已经适配的数字格式化入口
视频号显示为 AV 号哔哩哔哩在同一处出口二选一地展示 AV 号或 BV 号,开启后固定显示 AV 号;正文里的 BV 链接仍可识别和点击

分享

功能说明
净化分享链接清除分享面板链接与分享文案中哔哩哔哩链接的追踪参数,只保留分页和时间点。不展开 b23.tv 短链,因此不发起任何网络请求
小程序卡片转为普通链接分享到微信或 QQ 时改发普通链接卡片;标题只有应用名时回填真实视频标题,不追加任何署名文案

启动与系统

功能说明
开屏页跟随深色模式深色模式下开屏底色为黑、浅色模式为白,从深色界面切过去不再闪白;只改背景,不动开屏图与 logo
使用系统媒体控制通知打开哔哩哔哩自带但被灰度关闭的后台播放系统媒体样式通知
站外链接用系统浏览器打开哔哩哔哩以外的网页不再用内置浏览器打开。站内域名与支付、银联网关仍留在应用内;系统没有可用浏览器时保持原样,不会让客户端报错

▶️ 视频详情、播放器与内容流

视频详情页净化

功能说明
隐藏视频提及区域中的游戏广告过滤带游戏标签视频下“视频提及”等区域中已识别的游戏推广卡片,保留正常的视频信息、标签和详情内容
隐藏 UP 主分享好物推广隐藏视频详情页中已识别的“UP 主分享好物”等商品推广区域,不影响普通简介、合集、标签和评论内容
过滤相关推荐可分别过滤商业推广、游戏推荐、直播推荐、课程推荐和特殊推荐,依据宿主公开数据中的明确类型判断

播放器

功能说明
隐藏视频暂停页广告处理部分视频暂停后出现的推广内容;实际效果受客户端版本、播放器类型、账号实验分组和广告下发策略影响
隐藏竖屏切换按钮隐藏播放器中的“进入看一看”按钮,全屏、播放控制等其他控件保持可用
隐藏播放器互动组件屏蔽播放器内的投票卡、关注引导、三连契约卡和指令弹幕;进度章节点不受影响。默认关闭,重启哔哩哔哩后生效
屏蔽影视页自动活动半屏屏蔽电影、电视剧和番剧播放页在播放器下方自动展开的大会员促销等活动半屏;保留主动活动链接、购买入口与正常播放权限判断。默认关闭,重启哔哩哔哩后生效
播放器状态栏透明仅在普通视频详情页使用透明状态栏样式,不全局修改其他 Activity 或窗口
默认播放画质跟随哔哩哔哩,或优先请求 360P / 480P / 720P / 720P60 / 1080P / 1080P 高码率 / 1080P60 / 4K / 8K;仅调整视频开始播放时的初始画质请求,不解锁大会员或付费画质,片源、账号、网络或服务器不支持时客户端仍会自动调整

弹幕净化

功能说明
按权重过滤弹幕服务端为每条弹幕下发 1–10 的权重(越高越优质);设置最低保留权重后,低于该值的弹幕在播放前被删除。哔哩哔哩不下发权重时整段弹幕原样保留,不会把弹幕清空
屏蔽大会员渐变彩色弹幕移除大会员弹幕附带的渐变配色,弹幕本身仍以普通颜色显示

弹幕净化作用于弹幕内容流,与上面的“隐藏播放器互动组件”是两条独立链路,可分别开启。两项均默认关闭,重启哔哩哔哩后生效。

直播间

功能说明
禁止上下滑动切换直播间在直播间上下滑动不再切换到其它房间,其它手势和播放控制不变
双击暂停而不是点赞双击直播画面改为暂停或继续播放;无法切换播放状态时仍执行原本的点赞

竖屏视频流

竖屏连续播放界面支持分别过滤以下类别的内容:

广告 · 直播 · 游戏推广 · 番剧影视 · 课程 · 短剧 · 带货 · 电影 · 纪录片 · 电视剧 · 综艺 · 音乐

所有类别均通过已适配数据对象中的公开结构化类型或业务对象是否存在进行精确判断;没有明确命中时保持放行,普通竖屏视频维持原有顺序与播放行为。

💬 评论区净化与内容过滤

评论界面净化

功能说明
关闭评论关键词搜索链接评论中的关键词不再跳转搜索,评论文字、表情和正常链接结构尽量保持原样
隐藏空评论区引导隐藏“暂无评论”状态下的一键发送引导,不关闭评论区入口
隐藏评论投票组件隐藏评论中的投票、站队等组件,普通点赞、回复和正文不受影响
隐藏评论关注按钮隐藏评论区中的关注按钮,保留评论内容、用户徽章和其他交互
关闭评论体验反馈隐藏评论体验反馈、问卷等 QOE 内容
隐藏评论区运营推广过滤评论区数据中已识别的运营推广内容,不修改普通评论与回复正文
关闭评论点击快速回复短按评论正文或卡片时不再直接打开回复编辑器;显式回复按钮、底部输入栏、三点菜单和长按自由复制仍然可用

评论内容过滤

功能说明
按关键词过滤评论最多可配置 64 个关键词,支持逗号、中文逗号、分号或换行分隔;评论或回复正文包含任一关键词时被隐藏,匹配时忽略英文字母大小写
按用户等级过滤评论设置最低保留等级后,低于该等级的评论与回复会被隐藏;无法可靠读取某条评论的用户等级时保留该评论,避免误删
隐藏只有 @ 的评论正文除了 @ 某人之外没有其它内容时隐藏该评论;读不到 @ 名单时保留评论
按发布者过滤评论规则里每项写一个 UID 或用户名(用户名需完全一致),命中的发布者的评论与回复会被隐藏;无法识别发布者时保留评论

四条判据共用同一批评论列表读取边界,多开一条不会多挂一个 Hook。过滤覆盖已适配的主评论、置顶评论和嵌套回复列表,只读取判断所需的信息;没有命中时保留宿主原列表,命中时才创建过滤后的副本。它与自由复制相互独立,可以分别开启或关闭。

📋 评论与简介自由复制

评论区自由复制

启用后,长按评论正文会在当前内容附近弹出可选择文字的复制气泡。继续长按文字并拖动 Android 系统选择句柄,即可自由选取需要的片段,再通过系统浮动工具栏完成复制,不必复制整条评论。

  • 支持范围:普通评论、长评论、展开后的内容和部分回复列表。
  • 完整原文:优先读取评论数据中的完整原文,尽量避免只取得折叠状态下屏幕显示的省略文本,并保留原有换行。
  • Emoji 映射:哔哩哔哩自有 Emoji 会尽量映射为可读的文字形式,减少复制结果中的空白或无意义占位符。
  • 列表复用适配:滚动期间延后批量绑定,列表稳定后分批处理当前视口附近的评论;页面引用采用弱引用管理,长按期间暂停可能争用界面帧预算的任务。
  • 官方交互保护:图片、按钮、媒体容器和三点菜单等官方交互区域不会被正文长按监听器接管;在带图评论中使用自由复制并关闭气泡后,评论图片仍可正常点击打开预览。

视频简介自由复制

长按视频详情页简介后,可以使用同样的复制气泡选择部分文字。对于可展开简介,模块会尽量读取完整原文,并统一换行、清理末尾多余空白、处理图标或特殊 Span 产生的占位内容,同时保留正文段落结构。

复制气泡外观

显示方式说明
默认暗色默认配色,无需配置
手动亮色手动切换为亮色样式
自动跟随跟随哔哩哔哩亮暗主题;开启后覆盖手动亮色设置,主题结果提前判断并缓存,避免长按弹窗时临时执行反射

气泡使用透明对话框承载系统选择句柄和浮动工具栏,点击气泡外部即可播放退出动画并关闭。

🌍 漫游版本支持扩展

“漫游版本支持扩展”用于配合已经安装并启用的哔哩漫游模块工作。它不是哔哩漫游的替代品,也不提供账号、解析服务器、访问密钥或网络代理服务。

当较新的哔哩哔哩客户端改变内部分析目标时,旧版漫游可能在读取或生成 Hook 信息时出现异常。启用扩展后,本模块会尝试修补已知的分析候选问题,并协助漫游重建完整缓存,使其设置入口、页面定制和相关 Hook 能力能够在已适配版本中继续工作。当前兼容处理包括:

  • 在缓存损坏、过期或客户端版本变化时重新分析;
  • 减少无意义的重复全量分析和冷启动等待;
  • 在“我的”页面补充漫游设置入口;
  • 通过跨进程 Provider、受权限保护的广播和本地缓存同步开关状态;
  • 处理部分 MIUI/HyperOS 环境中的应用可见性与后台启动限制;
  • 功能关闭后恢复相应原生行为,避免兼容状态长期残留。

开启该功能后,通常需要按照设置页提示重启哔哩哔哩两次,使缓存重建与后续快速启动路径依次完成。实际兼容性同时受哔哩哔哩版本、哔哩漫游版本和 LSPosed 分支影响。

🧪 实验性功能与自动版本适配

实验性功能下设可以独立展开的「外观」与「兼容」菜单。界面美学、背景、配色规范和原显示设置 集中在外观;框架支持与宿主适配相关选项集中在兼容。

预见式返回动画

在支持预见式返回手势的系统中,模块设置界面的返回操作会走系统提供的返回过渡预览。

  • Android 14~15:以实验性开关的形式提供,可在设置中自行开启或关闭;
  • Android 16 及以上:系统对本模块强制启用该能力,运行时已无法关闭,因此设置中不再显示这一开关(已保存的偏好仍会保留,便于旧备份导入)。

部分厂商系统可能自行修改、限制或关闭对应动画。

自动版本适配

哔哩哔哩更新后,混淆类名、方法签名和页面结构可能变化。模块会结合类结构、字段类型、方法参数与绑定特征定位各功能所需的 Hook 点,并记录客户端版本、安装包指纹和适配规则版本。适配成功后会缓存结果,后续启动在环境未变化时优先使用快速路径,减少重复扫描。

各功能拥有相互独立的安装与诊断边界;自动适配只能覆盖结构仍然相近的客户端版本,若宿主发生大规模重构,部分能力仍可能需要等待模块更新。

升级哔哩哔哩后功能失效时

  1. 打开模块设置,进入“实验性功能 → 兼容”;
  2. 选择“重新适配当前版本”,确认清除记录;
  3. 重启哔哩哔哩,模块会在下次启动时重新定位当前版本的功能入口。

⚙️ 模块设置与维护工具

功能说明
激活状态模块主页显示是否已被 Xposed/LSPosed 激活,并在可用时展示框架名称与 API 版本;若显示未激活,应检查模块开关、作用域是否包含哔哩哔哩,以及修改后是否已结束并重启目标进程
隐藏桌面图标隐藏模块启动图标,之后仍可从 LSPosed 管理器进入设置;若 LSPosed 启用了“强制显示桌面图标”,需要先关闭该选项
一键重启哔哩哔哩保存设置后可从模块内结束并重新启动目标应用;Root、Shell 权限或厂商后台限制可能导致操作失败,此时可手动强制停止后再打开
日志设置日志捕捉可独立开启,提供“精简”与“完整”两档:精简档保留显著错误与关键运行问题,完整档增加 Hook 注册、功能命中和拦截信息;公开日志前请自行检查其中可能包含的客户端版本、类名与运行状态
更新检查支持 Stable 与 Preview 双渠道,分别进行低频检查,网络失败时可切换备用镜像;Stable 只接收正式 Release,Preview 同时比较符合语义版本格式的 Alpha 预发布版并提示风险;模块不会在后台静默安装 APK,是否下载、安装或使用测试版本始终由用户决定

环境要求

项目要求
Android 版本Android 8.1(API 27)及以上
Root / Hook 环境建议使用 Magisk + LSPosed
目标应用官方 Android 哔哩哔哩,包名 tv.danmaku.bili
模块框架Xposed / LSPosed 兼容环境
应用多开仅支持包名仍为 tv.danmaku.bili 的系统级多用户 / 应用双开 / 工作资料;不支持改包名的克隆与 VirtualApp 类容器多开,详见多开与多用户
已验证客户端8.84.0~9.11.0 的主要版本路径
漫游扩展需要用户另行安装并启用兼容的哔哩漫游版本
预见式返回Android 14~15 提供开关;Android 16 及以上由系统强制启用,设置中不再显示该开关

“已验证”只表示项目在相应版本或同类结构上进行过开发测试,不代表所有设备、系统主题、账号实验分组和客户端小版本都能得到完全相同的结果。理论上介于已验证版本号之间的客户端亦可使用,但不保证功能完全实现;若功能失效并希望项目进行适配,请按照问题反馈中的流程提交 Issue。


安装方法

准备

  1. GitHub Releases 下载 APK;
  2. 在 Android 设备上安装或覆盖安装模块。

在 LSPosed 中启用

  1. 打开 LSPosed 管理器;
  2. 启用 Bilibili Innocent Lab
  3. 将官方哔哩哔哩 tv.danmaku.bili 加入模块作用域;
  4. 强制停止哔哩哔哩,然后重新启动。

验证与配置

  1. 打开模块设置,确认页面显示“模块已激活”;
  2. 根据需要在净化、增强或实验性功能中启用相应选项;
  3. 若设置未立即生效,使用模块内的“重启哔哩哔哩”,或手动强制停止目标应用。

漫游扩展

  1. 漫游版本支持扩展请按照页面提示完成两次重启。

覆盖安装模块后,一般不需要清除哔哩哔哩数据。除非发布说明明确要求,否则不要随意清空客户端数据、模块配置或漫游缓存。


多开与多用户

模块作用于哔哩哔哩的包名。因此“多开”能否使用,取决于克隆出来的那份客户端包名是否还是 tv.danmaku.bili

多开形态克隆后的包名是否支持
系统多用户、应用双开、工作资料仍为 tv.danmaku.bili✅ 支持,但需按下面的步骤在该用户下单独启用
改包名克隆(部分免 Root 多实例、改包工具)变成其他包名❌ 不支持
VirtualApp 类容器多开(分身类 App 内运行)容器 App 自己的包名❌ 不支持

为什么改包名的克隆用不了:模块的 Xposed 作用域是固定的(staticScope),只声明了官方包名,管理器里无法手动添加别的包;即使框架肯注入,模块按官方包名解析的宿主资源与缓存目录也都会落空。这是有意的取舍——把宿主身份变成运行期变量会牵连授权链、Provider 调用方校验和跨进程广播,收益覆盖不到大多数用户。

在分身 / 多用户下的启用步骤

框架是按 Android 用户分别投递 libxposed 服务的,主用户里启用过并不会自动覆盖分身用户:

  1. 在运行分身客户端的那个用户下,同样安装模块 App;
  2. 在框架管理器里切换到该用户,为该用户启用本模块,并确认作用域包含哔哩哔哩;
  3. 在该用户下打开一次模块设置,让配置完成发布;
  4. 强制停止并重启该用户下的哔哩哔哩。

若模块设置页显示“当前 Android 用户 N 下没有框架服务”,说明第 2 步没有在该用户下完成;若显示“模块在用户 A,哔哩哔哩在用户 B”,说明模块和客户端被装在了不同用户里,配置无法送达。诊断中心的「框架服务」一项会给出同样的判断依据。


推荐使用顺序

首次安装建议按以下顺序验证:

  1. 确认模块已激活;
  2. 只开启一个界面净化功能;
  3. 重启哔哩哔哩并检查详情页或首页;
  4. 测试评论区自由复制;
  5. 测试视频简介自由复制;
  6. 根据主题选择手动亮色气泡或自动跟随;
  7. 确认基础功能稳定后,再尝试实验性功能;
  8. 仅在已安装哔哩漫游且确有兼容需求时开启漫游扩展。

逐项启用更便于判断问题来源,也能避免多个模块同时修改同一页面时难以定位冲突。


Release 通道

Stable 稳定版Alpha 预发布版
定位日常使用提前验证新功能、适配新客户端、测试兼容性修复
更新检查模块内置检查默认只接收正式 Release同时比较正式版与符合语义版本格式的 Alpha 预发布版,并提示预发布风险
稳定性优先考虑已知功能、构建完整性和基础兼容性可能包含尚未完成广泛设备验证的改动
适用建议推荐日常使用不建议在无法自行导出日志或恢复旧版本的设备上长期使用

发布纪律:Alpha 版本不会因为每一次本地构建而自动发布,只有在开发者明确认为当前构建具备测试价值时,才应通过对应工作流上传,避免 Release 页面被大量不可用的中间产物占满。

版本号规则:Alpha 的版本前缀始终使用当前稳定版的下一个补丁版本——稳定版为 1.0.6 时,Alpha 使用 1.0.7-alpha.N;正式发布 1.0.7 后,再切换到 1.0.8-alpha.N


常见问题

问题排查方法
模块显示未激活确认 LSPosed 已启用本模块,作用域包含官方哔哩哔哩;修改作用域后重启目标应用,必要时重启设备
分身 / 双开里检测不到 libxposed 服务框架按 Android 用户分别投递服务:需要在运行分身客户端的那个用户下也安装模块、在管理器中切到该用户并为该用户启用,然后打开一次模块设置。改包名的克隆和 VirtualApp 类容器不在支持范围内,详见多开与多用户
开关已打开但功能没有生效先强制停止并重启哔哩哔哩;刚升级客户端可尝试“重新适配当前版本”;漫游扩展可能需要两次启动完成缓存重建
评论长按没有出现自由复制气泡确认评论自由复制开关已开启,且当前页面属于已适配的官方评论区;若只有少量评论失效,请记录评论类型、是否带图、是否为回复列表及客户端版本
使用自由复制后图片无法打开当前版本已专门保护带图评论的媒体容器;请确认使用最新构建并彻底重启哔哩哔哩进程,仍可复现时请说明操作顺序及气泡关闭后到点击图片的间隔
气泡内无法选择或复制文字确认没有其他模块同时 Hook 系统剪贴板、文本选择工具栏或 PopupWindow;部分厂商系统深度定制了文本选择组件,遇崩溃请提供系统版本和 crash 日志
首页轮播仍然出现首页结构可能受账号实验分组影响;请提供客户端版本、首页样式截图和完整日志,避免只描述“功能无效”
漫游扩展开启后仍然异常请一并提供:哔哩哔哩、哔哩漫游、本模块、LSPosed(含分支)、Android/ROM 各自版本,是否完成两次重启,以及 LSPosed 中目标主进程的相关日志
与其他模块冲突怎么办多个模块同时修改评论区、视频详情页、剪贴板、主题属性或漫游缓存时可能产生执行顺序冲突;建议暂时关闭其他模块仅保留本模块复现,确认单模块正常后再逐个恢复

构建项目

仓库根目录和 Gradle 工程目录并不相同。Gradle 工程位于:

Bilibili_Innocent_Lab/

构建 Debug APK

Windows PowerShell:

cd Bilibili_Innocent_Lab
.\gradlew.bat assembleDebug --console=plain --no-daemon

Linux / macOS:

cd Bilibili_Innocent_Lab
./gradlew assembleDebug --console=plain --no-daemon

运行 JVM 单元测试

.\gradlew.bat testDebugUnitTest --console=plain --no-daemon

产物校验

调试 APK 输出位置:

Bilibili_Innocent_Lab/app/build/outputs/apk/debug/app-debug.apk

构建完成后,请确认 APK 修改时间晚于源码修改时间。安装到设备后,建议对比本地 APK 与设备端已安装 base.apk 的校验值,避免 Gradle 缓存或旧产物导致测试结果失真。

延伸文档


性能与兼容设计

本模块包含多个运行在目标应用进程中的 Hook,因此在设计时尽量避免把复杂逻辑放入高频回调:

热路径与调度

  • 对滚动、触摸和文本绑定路径设置快速返回条件;
  • 评论绑定使用空闲调度与分批处理。

缓存与生命周期

  • 反射获得的方法和字段会尽量缓存;
  • 页面、Dialog 和评论 View 使用弱引用保存;
  • 异步任务只持有 Application Context;
  • 新版本适配结果写入缓存,避免每次启动重复扫描。

兼容与豁免

  • 跨进程开关读取具有多级降级路径;
  • 对自己的 Dialog、系统选择句柄和宿主媒体容器设置身份或来源豁免;
  • 在 ROM 差异明显的窗口、状态栏和主题属性上使用显式配置。

项目不会为了追求“拦截更多内容”而无条件接管所有系统 API。对于 PopupWindow、Dialog、剪贴板、广播和触摸事件等影响范围较大的入口,优先根据对象身份、调用来源和手势生命周期判断是否属于模块目标,避免干扰图片预览、系统文本选择和宿主其他正常功能。


问题反馈

提交 Issue 前,请尽量完成以下检查:

  1. 使用最新稳定版或说明正在使用的 Alpha 版本;
  2. 确认问题在只启用本模块时仍能复现;
  3. 记录哔哩哔哩、Android、LSPosed 和模块版本;
  4. 说明具体功能开关状态;
  5. 给出从进入页面到问题出现的完整操作步骤;
  6. 必要时附上截图、录屏或 LSPosed 日志;
  7. 崩溃问题请优先提供 crash buffer 中的完整堆栈;
  8. 不要公开上传账号、Cookie、访问密钥或其他个人敏感数据。

明确、可重复的步骤通常比单独一句“不能使用”更容易定位问题。


隐私说明

模块的功能逻辑主要在本地设备和目标应用进程中运行。运行日志写入 LSPosed 日志系统,更新检查会访问 GitHub Release 信息。模块不会代替用户登录哔哩哔哩,也不会要求用户向本项目提交账号密码。

在导出和分享日志前,用户仍应自行检查其中是否包含视频链接、设备信息、应用版本或其他不希望公开的内容。


免责声明

本项目是非官方、非商业性质的个人学习与研究项目,与哔哩哔哩及其关联公司不存在隶属、授权、合作或背书关系。

使用 Xposed/LSPosed 模块可能改变目标应用运行行为,并可能受到客户端更新、系统安全策略、厂商 ROM、账号实验分组或其他模块的影响。使用者应自行评估风险,并对安装、启用、数据备份和设备环境负责。

本项目不提供任何内容资源,不参与账号交易,不提供访问凭证,也不保证第三方扩展服务的可用性。请在遵守所在地法律法规、目标平台规则和开源项目许可的前提下使用。

附加免责声明与风险提示

重要提示:请在下载、安装、编译、分发或使用本项目之前完整阅读本声明。
本声明用于说明项目性质、使用风险与责任边界,不构成针对任何个人、组织或司法辖区的正式法律意见。若你计划将本项目用于公开发行、组织运营、商业活动或其他具有较高法律风险的场景,请另行咨询具备相应资质的专业人士。若你不同意本声明的任何内容,请立即停止下载、安装、编译、分发或使用本项目。

一、项目性质与非官方声明

Bilibili Innocent Lab 是由社区开发者独立维护的非官方、非商业性质开源研究项目,主要用于 Android、Xposed/LSPosed、运行时 Hook、界面交互和软件兼容性等技术的学习、研究与交流。

本项目与哔哩哔哩及其运营主体、关联公司、合作伙伴不存在任何隶属、授权、委托、合作、赞助、认可或背书关系,也不代表任何第三方平台、框架或扩展项目的立场。

项目名称、文档或代码中出现的“哔哩哔哩”“Bilibili”、相关应用包名、界面名称、产品名称、商标、标识及其他专有名称,仅用于说明兼容目标、技术背景或功能适用范围。其商标权、著作权及其他合法权益均归相应权利人所有。此类描述性使用不表示本项目获得了相关权利人的授权。

二、功能边界声明

本项目仅提供运行于用户本地设备中的模块代码,不是独立视频客户端,不提供或运营任何音视频内容、账号服务、会员服务、网络代理、解析服务、访问凭证、Cookie、Access Key、版权内容、付费资源或第三方平台数据。

本项目不会授予用户对任何第三方内容、软件、接口、账号或服务的额外权利。模块提供的文本选择、界面净化、交互增强、版本适配或第三方扩展兼容能力,不代表用户因此取得复制、转载、发布、传播、修改、汇编或商业使用相关内容的许可。

自由复制功能仅改变本地界面的文本选择方式。用户复制、保存、引用、转载或传播评论、简介及其他文本时,应自行确认其行为符合著作权、隐私权、个人信息保护、平台规则及其他适用要求。模块能够执行某项技术操作,不等于该操作在所有场景下均具有合法授权。

三、禁止用途

本项目不以规避付费机制、破解会员权益、绕过数字版权保护、破坏访问控制、获取未授权数据、干扰平台正常运营、实施网络攻击、传播违法内容或侵犯第三方合法权益为目的。

任何人不得利用本项目从事包括但不限于以下行为:

  • 未经授权访问、抓取、收集、出售或传播第三方数据;
  • 绕过付费服务、版权保护、账号权限或安全验证;
  • 获取、分享或滥用他人的账号、Cookie、Token、Access Key 等凭证;
  • 大规模复制、转载、下载或传播无合法授权的内容;
  • 对平台、服务器、客户端或其他用户实施干扰、攻击、欺诈或滥用;
  • 将项目重新包装为含恶意代码、隐私收集、广告注入或收费欺诈的版本;
  • 违反所在地法律法规、目标平台规则或第三方开源许可证的其他行为。

因使用者擅自改变项目用途、修改代码、组合其他工具或实施违规操作所产生的责任,由实际行为人自行承担。

四、设备、系统与账号风险

Xposed、LSPosed、Magisk、Root、Zygisk 及其他运行时 Hook 环境会改变 Android 系统和目标应用的正常执行流程,可能降低系统安全边界或引发不可预期行为。即使项目在特定设备和客户端版本上经过测试,也无法保证在其他环境中具有相同结果。

潜在风险包括但不限于:

  • 目标应用启动失败、闪退、无响应或功能异常;
  • 系统界面异常、软重启、启动循环或设备无法正常进入系统;
  • 应用配置、缓存、本地文件或其他数据损坏、丢失;
  • 电量消耗、内存占用、发热或性能发生变化;
  • 与其他模块、主题、ROM 定制功能或安全软件产生冲突;
  • 账号被限制功能、触发安全验证、受到警告、封禁或其他平台处置;
  • 客户端更新后部分或全部 Hook 失效;
  • 第三方扩展、依赖库或服务发生异常、停止维护或改变行为。

使用者应当具备恢复设备、关闭模块、卸载 APK、进入安全模式、还原备份和排查 LSPosed 日志的基本能力。使用前请自行备份重要数据,并确保能够承担测试失败或环境冲突带来的后果。

项目维护者没有能力控制第三方平台的风控规则,也不会对账号安全、账号价值、账号权益或平台处罚结果作出任何承诺。

五、兼容性与可用性声明

本项目基于目标应用在特定时间、特定版本中的运行结构开发。目标应用可以随时调整类名、方法签名、数据结构、界面布局、网络协议、实验配置和安全策略,因此本项目的任何功能都可能在客户端更新后部分失效、完全失效或产生新的兼容问题。

README、Release 说明、已验证版本列表、截图、日志和测试结果,仅代表相应测试时间与测试环境中的表现,不构成对其他设备、系统、账号、地区、网络环境或未来版本的保证。

项目维护者不保证:

  • 所有功能永久有效;
  • 所有设备和 ROM 均可正常运行;
  • 所有客户端版本均能自动适配;
  • 项目不存在错误、漏洞、兼容问题或安全风险;
  • Issue、反馈或兼容请求一定会被处理;
  • 修复会在特定期限内发布;
  • Release、Alpha 构建或更新检查服务始终可用;
  • 第三方模块、依赖库或外部服务能够持续兼容。

项目可能随时修改、暂停、删除或停止维护部分功能,也可能停止发布构建、归档仓库或结束整个项目,恕不承诺提前通知。

六、无担保声明

在适用法律允许的最大范围内,本项目及相关代码、文档、构建产物、脚本、配置和说明均按“现状”和“可用状态”提供,不附带任何明示、默示或法定担保。

项目作者、维护者、贡献者和发布者不对适销性、特定用途适用性、准确性、完整性、稳定性、连续性、安全性、不侵权性、无错误性、无病毒性或与特定设备兼容性作出保证。

任何示例、测试记录、性能数据、开发经验或用户反馈都不应被理解为承诺、保证或服务等级协议。使用者应自行验证项目是否适合其设备、账号和使用目的。

七、责任限制

在适用法律允许的最大范围内,项目作者、维护者、贡献者、发布者及相关协作者不对因下载、安装、编译、修改、分发、启用、禁用或使用本项目而直接或间接产生的损失承担责任,包括但不限于:

  • 数据丢失、文件损坏、设备故障或系统恢复成本;
  • 应用异常、功能中断、业务中断或时间损失;
  • 账号限制、封禁、权益损失或平台处罚;
  • 收益损失、机会损失、商誉损失或预期利益损失;
  • 隐私泄露、凭证暴露或第三方索赔;
  • 使用非官方构建、被篡改版本或恶意二次打包造成的损失;
  • 与第三方模块、框架、服务、网站或依赖发生冲突造成的损失;
  • 任何间接、附带、特殊、惩罚性、偶然性或后果性损失。

上述责任限制不适用于依据适用法律不得排除、限制或转移的责任。本声明不试图免除因故意、重大过失、人身损害或其他依法不得免责事项所产生的法定责任。

八、第三方项目与外部链接

本项目可能使用或提及 LSPosed、Xposed、Magisk、YukiHookAPI、KavaRef、哔哩漫游、GitHub 及其他第三方软件、框架、服务或网站。相关项目均由各自权利人独立维护,并适用其各自的许可证、隐私政策、服务条款和免责声明。

项目中出现第三方名称、链接或兼容代码,不代表本项目对其安全性、合法性、稳定性或持续可用性作出保证,也不代表双方存在合作或授权关系。

访问外部链接、安装第三方组件、启用其他模块或使用外部服务所产生的风险,由使用者自行判断和承担。

九、构建产物与二次分发

建议仅从本项目官方 GitHub 仓库及其 Releases 页面获取源码和 APK,并自行核对 Release 来源、数字签名、文件校验值和版本信息。

项目作者无法控制第三方网站、网盘、群组、论坛或个人重新分发的安装包。对于非官方来源、被修改版本、重新签名版本、恶意二次打包版本或捆绑其他软件的版本,项目维护者不提供可信性保证,也不承担由此产生的责任。

任何二次分发者都应遵守仓库适用的开源许可证、保留必要的版权和来源信息,并明确说明其构建并非官方发布。不得冒用项目作者身份,不得将修改版本描述为官方原版,也不得利用本项目实施收费欺诈、恶意广告、隐私收集或其他损害用户权益的行为。

十、日志、隐私与问题反馈

模块运行日志可能包含应用版本、系统版本、设备型号、进程名称、类名、页面状态、视频链接或其他运行环境信息。用户在公开提交 Issue、日志、截图或录屏前,应自行检查并删除账号信息、Cookie、Token、Access Key、个人聊天、评论身份、设备序列号和其他敏感内容。

用户主动提交至 GitHub、论坛或其他公开渠道的信息,可能被第三方查看、转载、索引或长期保存。项目维护者无法保证外部平台能够彻底删除已经公开传播的信息。

如果用户提交的内容包含明显敏感信息、第三方隐私或与问题无关的数据,维护者可以对其进行隐藏、删除或拒绝处理,但不保证能够在泄露发生前及时发现。

十一、不提供持续支持

本项目由开发者利用个人时间维护,不构成商业服务、技术支持合同、托管服务或服务等级协议。

项目维护者没有义务:

  • 对每个 Issue 作出回复;
  • 为特定设备或版本提供专门适配;
  • 提供一对一远程协助;
  • 修复所有错误或兼容问题;
  • 保证更新频率;
  • 保留历史版本下载;
  • 对二次修改版本提供支持;
  • 为用户恢复设备、账号或数据。

社区帮助、开发建议和问题回复均属于自愿行为,不应被理解为持续服务承诺。

十二、权利人联系与内容处理

如果任何权利人认为本项目中的代码、文档、名称、截图、链接或其他内容侵犯其合法权益,可以通过 GitHub Issue 或仓库公开联系方式提交说明,并提供足以识别权利主体、相关内容和权利基础的必要信息。

项目维护者将在合理范围内进行核查,并可视情况采取说明、修改、移除、限制分发或其他适当措施。对反馈进行处理不代表项目维护者自动承认侵权、违法或承担责任。

十三、声明更新

本免责声明可能随着项目功能、发布方式、依赖关系和适用规则变化而更新。更新后的版本自公开发布之日起适用于后续下载、安装、编译和使用行为。

使用者有责任在更新模块或重新使用项目前查看最新 README、Release 说明和免责声明。继续使用更新后的项目,表示使用者已经知悉相应风险提示;若不同意更新内容,应停止使用并卸载相关版本。

十四、可分割性与法律效力边界

如果本声明中的部分条款被认定为无效、不可执行或与适用法律冲突,不影响其他条款在法律允许范围内继续适用。相关条款应在尽可能接近原有风险提示和责任边界目的的前提下,按照适用法律进行解释。

项目维护者未立即行使或主张某项权利,不应被解释为永久放弃该项权利。

需要特别说明的是,免责声明并不当然排除一切责任。中国《民法典》对格式条款的提示说明义务、责任限制以及依法不得免责的情形设有明确边界,因此本声明始终以“适用法律允许的最大范围”为限,不排除任何依法不得排除的责任。《中华人民共和国民法典》最高人民法院关于民法典合同编通则的相关解释

涉及复制、转载、传播或使用第三方作品时,使用者还应自行遵守著作权及信息网络传播权相关规则。本模块提供技术上的文本选择能力,不等于获得内容权利人的复制或传播许可。《中华人民共和国著作权法》

十五、使用确认

下载、安装、编译、修改、分发或使用本项目之前,请确认你已经理解:

  1. 本项目是非官方社区项目;
  2. Hook 环境可能影响设备、应用和账号安全;
  3. 功能可能随客户端更新失效;
  4. 自由复制能力不等于获得内容传播授权;
  5. 第三方服务和模块由各自维护者负责;
  6. 非官方构建可能包含无法验证的修改;
  7. 你应自行备份数据并具备恢复环境的能力;
  8. 你应对自己的具体使用方式及其后果负责;
  9. 项目不提供任何形式的绝对安全、永久兼容或无风险保证;
  10. 所有责任限制均以适用法律允许的范围为限。

如果你无法接受上述风险,请不要安装、启用或继续使用本项目。


许可证

除另有说明的第三方内容外,本项目原创源代码采用 GNU General Public License v3.0 only 许可。

SPDX-License-Identifier: GPL-3.0-only

项目使用或兼容的第三方组件、框架与代码分别遵循其自身许可证。

致谢

感谢以下项目和社区提供的基础能力与开发参考:

  • YukiHookAPI
  • KavaRef
  • BBZQ
  • Xposed / LSPosed 社区
  • Android 开源项目与相关开发文档
  • 参与测试、反馈兼容问题和提供日志的用户

如果这个项目对你有帮助,欢迎通过 Issue 提交可复现的问题、兼容性信息或改进建议。