命令行工具
kitsumed/ShizuCallRecorder avatar
kitsumed/ShizuCallRecorder

ShizuCallRecorder:借 Shizuku 在非 root 设备上录制双通话,但脆弱点不少

ShizuCallRecorder 通过 Shizuku 使 ADB 能够在非 root 设备上录音!

1,490 个 Star58 个 ForkKotlinGPL-3.0
GitHub

秒懂

它是什么?
ShizuCallRecorder 通过 Shizuku 调用 ADB 权限,在 Android 12 以上非 root 设备上录制通话双方声音。它依赖隐藏 API 和 scrcpy-server,存在明确的兼容性边界与法律风险。
适合谁用?
ShizuCallRecorder 适合那些拥有 Android 12 以上设备、愿意先配置 Shizuku 和 ADB 设置、并且清楚通话录音法律风险的技术用户。它不适合需要稳定录音、或设备厂商深度定制系统的人。
能商用吗?
可以,但有条件。GPL-3.0 是 copyleft 许可证:如果你分发包含它的软件,就必须以同一许可证公开该软件的源代码。只在内部运行、不对外分发,则不会触发这项义务。
还在维护吗?
在维护。仓库最近一次提交在 11 天前。
用什么语言写的?
主要是 Kotlin(依据 GitHub 的语言统计)。

以上回答依据项目的 GitHub 数据(最近同步于 2026年9月14日)和我们的分析,不构成法律意见。

开源项目深度解析

它解决什么问题:非 root 设备上的双端通话录音

Android 从 10 开始收紧通话录音权限,普通应用无法直接录制通话双方的声音。ShizuCallRecorder 的目标是填补这个空白:它通过 Shizuku 获得 ADB 级别的权限,在非 root 的 Android 11 以上设备上录制通话双方。README 明确说这是第一个非 root 的 FOSS 通话录音应用。它只针对运营商通话,不打算支持第三方应用录音,作者在 README 里说想保持简单。适合的人群是那些不想 root 设备、但需要录音证据或存档的用户,比如记者或客服人员。

机制:Shizuku 授权、scrcpy-server 与隐藏 API 的组合

ShizuCallRecorder 的核心是借助 Shizuku 授权 ADB 权限,然后调用 Android 内部为 shell 应用预留的权限列表。它实际上是一个 on-device 的 scrcpy-server 封装,也就是说录音功能依赖 scrcpy-server 的代码。scrcpy-server 本身是用于屏幕镜像的,但这里复用了它的音频捕获部分。录音时,应用监听电话事件变化,只在事件触发时运行,没有常驻后台进程和通知。它支持 Opus 和 AAC 两种编码。安全方面,应用提供开关来管理 Shizuku 的开启和关闭,目的是减少 Shizuku 带来的攻击面。这个设计是聪明的,但依赖链很长:Shizuku、scrcpy-server、Android 隐藏 API,任何一个环节出问题都会导致录音失败。

安装与配置:不是装上就能用,需要手动设置

README 用了多个警告符号强调需要初始配置,安装说明放在 docs/SUPPORT.md 里。你首先需要安装 Shizuku,README 推荐 thedjchi 分支,而不是官方主分支。然后需要启动 Shizuku 并授权 ADB。应用本身可以从 GitHub Releases 或 F-Droid 获取。配置方面,有自动录音选项,包括忽略匿名来电、忽略特定联系人、忽略所有联系人。这些排除规则通过设置界面配置。录音编码可以在 Opus 和 AAC 之间选择。注意,Android 11 支持有限,要求屏幕解锁,否则会崩溃。Android 12 到 16 是支持的,Android 17 未知。安装前必须检查你的设备版本和 OEM 系统是否兼容。

兼容性边界:隐藏 API 与 OEM 改动是最大风险

README 明确警告,这个应用使用隐藏的内部 Android API,容易在新版本或特定 OEM 修改中失效。它列出了两个主要依赖点:scrcpy-server 和 Shizuku。Android 11 下需要屏幕解锁,否则崩溃。Android 17 有重大 ADB 改动,目前未知是否支持。OEM 的深度定制系统可能改变 API 行为,导致录音失败。这不是理论风险,README 说可能存在非确定性行为,比如并发通话时无法检测状态转换,可能把多个通话录进同一个文件里。这种脆弱性意味着你不能把它当作生产级工具,只能作为实验性解决方案。

过滤逻辑的局限:隐私限制导致号码获取不稳定

自动录音的排除规则依赖电话号码判断,但 Android 的隐私限制使应用无法实时获取号码。README 提到,根据通话检测模式,应用可能依赖过时或不稳定的值来做初始判断。这意味着忽略特定联系人的功能可能不准确,比如来电显示未及时更新,或者号码格式不同。实际效果是,你设置忽略某个联系人,但可能仍然录到他的来电,或者反过来漏录。这个限制是 Android 平台本身的,不是应用开发者能解决的。如果你依赖自动录音的精确过滤,这个应用可能让你失望。手动录音模式可能更可靠,但 README 没有详细说明手动操作方式。

法律与安全:录音同意责任在用户,Shizuku 有攻击面

README 用大量篇幅说明法律风险:通话录音法律因国家而异,用户必须确保获得所有参与者的同意。应用不处理同意流程,自动录音功能在某些地区可能不合法。这不是法律建议,但你必须知道。安全方面,Shizuku 本身是一个高权限服务,应用提供安全开关来关闭它,但这只是缓解措施。启用 USB 调试或 Shizuku 时,某些应用会检测并警告,安全开关可以帮助你临时关闭。但攻击面仍然存在:如果 Shizuku 被滥用,可能获得 ADB 权限。权衡是,非 root 方案必然引入这种风险。

替代方案:root 录音应用与系统内置录音

最常见的替代是 root 设备后使用类似 Call Recorder 的应用,它们直接访问内核音频接口,不依赖隐藏 API,稳定性更高。但 root 会失去保修并增加安全风险。另一类是手机厂商自带的通话录音功能,比如小米、三星等系统内置,但通常只支持特定地区或需要手动开启。这些方案没有 ShizuCallRecorder 的 FOSS 特性,也不一定支持双端录音。ShizuCallRecorder 的独特之处在于非 root 和开源,但代价是脆弱性。如果你不能接受 root,且厂商录音不可用,那它是目前唯一的选择。

维护成本与许可证:GPL-3.0 附加条款,更新依赖上游

项目最近活跃,v1.3.3 在 2026 年 8 月发布,但活跃不代表稳定,因为依赖的 scrcpy-server 和 Shizuku 都在变动。每次 Android 新版本发布,你可能需要等待项目更新。许可证是 GPL-3.0,并附加了第 7 节条款:不授予商标和品牌权,项目名和包名归版权持有者所有。这意味着你可以基于源码开发衍生应用,但必须保持 GPL 开源,且不能使用 ShizuCallRecorder 这个名字。这不是法律建议,但如果你打算商用或分发,需注意这些限制。维护成本方面,你需要跟踪 Shizuku 和 scrcpy-server 的更新,并测试你的设备是否兼容。

编辑结论

ShizuCallRecorder 适合那些拥有 Android 12 以上设备、愿意先配置 Shizuku 和 ADB 设置、并且清楚通话录音法律风险的技术用户。它不适合需要稳定录音、或设备厂商深度定制系统的人。采用前先确认你的 Android 版本在官方测试表内,并检查 Shizuku 是否来自 thedjchi 分支,因为主分支可能不兼容。另外,GPL-3.0 及其附加条款要求衍生项目保持开源,且项目名和包名归版权持有者所有,若你想基于它二次开发,需注意商标与许可证限制。最后,自动录音的过滤逻辑依赖不稳定 API,可能误录或漏录,法律上你需要自行处理同意问题。这个项目目前是唯一非 root 的 FOSS 通话录音选择,但它建立在脆弱的隐藏 API 之上,新 Android 版本或 OEM 改动都可能随时打破它。

官方来源

  1. Official README
  2. Project repository
  3. Release notes
社区笔记

社区笔记