给 AI 用的 Android 隐藏 API 兼容性查询 MCP
# 开源地址
[https://github.com/android-cs/android-api-diff](https://github.com/android-cs/android-api-diff)
如果你的应用有对接 shizuku/shell/root 的功能场景,基本都会调用 Android 的隐藏 API。
但隐藏 API 不考虑兼容性,因为它是给 Android 内部自己用的并且编译时不可见会编译失败。
工程化的做法是创建 hidden-api 模块去声明隐藏 API 让主项目顺利通过编译,然后使用 [HiddenApiBypass](https://github.com/LSPosed/AndroidHiddenApiBypass) 允许调用隐藏 API,基本 0 反射调用。
但每个大版本签名情况不一样,甚至单个版本内的不同小版本也有区别,下面是一些常用例子:
- [IUserManager.getUsers](https://diff.songe.li/i/IUserManager.getUsers) 有 2 个签名
- [IPackageManager.getInstalledPackages](https://diff.songe.li/i/IPackageManager.getInstalledPackages) 有 3 个签名
- [IActivityTaskManager.getTasks](https://diff.songe.li/i/IActivityTaskManager.getTasks) 有 3 个签名
古法编程时代是人工查看每个版本,出纰漏的概率很大。
AI 时代虽然 AI 自己也能查源码,但仍需要有工具能快速给 AI 准确的信息。
本项目原本是在线网页,给我自己一键查看兼容性的,效率相比以前自己手动拼链接看快了很多。
后面全使用 AI 了,再人工查看就不太行了,索性直接一步到位封装了 MCP 给 AI 调用。
虽然现在 Android 拉了,但如果你的 Android 项目有开头说的使用场景,那本项目应该是必备的。

---
原文链接:[点击查看](https://www.v2ex.com/t/1227552)
[https://github.com/android-cs/android-api-diff](https://github.com/android-cs/android-api-diff)
如果你的应用有对接 shizuku/shell/root 的功能场景,基本都会调用 Android 的隐藏 API。
但隐藏 API 不考虑兼容性,因为它是给 Android 内部自己用的并且编译时不可见会编译失败。
工程化的做法是创建 hidden-api 模块去声明隐藏 API 让主项目顺利通过编译,然后使用 [HiddenApiBypass](https://github.com/LSPosed/AndroidHiddenApiBypass) 允许调用隐藏 API,基本 0 反射调用。
但每个大版本签名情况不一样,甚至单个版本内的不同小版本也有区别,下面是一些常用例子:
- [IUserManager.getUsers](https://diff.songe.li/i/IUserManager.getUsers) 有 2 个签名
- [IPackageManager.getInstalledPackages](https://diff.songe.li/i/IPackageManager.getInstalledPackages) 有 3 个签名
- [IActivityTaskManager.getTasks](https://diff.songe.li/i/IActivityTaskManager.getTasks) 有 3 个签名
古法编程时代是人工查看每个版本,出纰漏的概率很大。
AI 时代虽然 AI 自己也能查源码,但仍需要有工具能快速给 AI 准确的信息。
本项目原本是在线网页,给我自己一键查看兼容性的,效率相比以前自己手动拼链接看快了很多。
后面全使用 AI 了,再人工查看就不太行了,索性直接一步到位封装了 MCP 给 AI 调用。
虽然现在 Android 拉了,但如果你的 Android 项目有开头说的使用场景,那本项目应该是必备的。

---
原文链接:[点击查看](https://www.v2ex.com/t/1227552)
评论
暂无评论。