谷歌在 Android 17 中已经禁止普通应用读取开发者选项和 USB 调试状态。现在应用尝试读取这些状态时,系统会直接返回 0,也就是“关闭”。此前,不少应用会通过 API 读取这些字段,把它们当作设备环境检测的条件,典型例子就是银行类应用,一旦检测到用户开启了 USB 调试,就直接禁止登录。谷歌的判断很明确:普通应用读取这类信息完全没必要,因此干脆让返回值恒定为零,从源头堵住这个口子。
实际上,很多应用在安装或启动阶段都会探测系统是否开启开发者选项或 USB 调试模式。至于这些应用为什么要读取这些信息,外界并不完全清楚。但谷歌的态度很坚决:普通应用没有理由碰这些数据。所以在 Android 17 中,任何尝试读取的操作都会得到相同的答案,始终返回 0。

谷歌官方确认已经禁止读取状态信息
过去,应用可以通过读取系统字段来判断 USB ADB 调试是否已开启,以及开发者模式是否启用。返回值 0 代表关闭,返回 1 代表启用。
谷歌在代码提交说明中给出的理由相当直接:这类信息对普通应用来说并不重要。因此,合并到 AOSP 的变更会让应用读取这些字段时始终得到 0。这项更改已经在 2026 年 3 月合并进 AOSP 代码仓库。
这种做法和直接禁止访问不同。现有应用通常不需要因为 API 消失而修改代码,但如果此前依赖返回 1 来判断开发者模式或 USB 调试状态,那么在新系统上,这套检测逻辑会直接失效。
银行类应用无法再逼迫用户关闭开发者模式
长期以来,应用程序可以直接读取这些选项状态,因此部分应用将开发者选项和 USB 调试作为设备环境检测条件。比如,一些银行类应用检测到 USB 调试或开发者模式开启后,会以安全隐患为由直接禁止登录。
现在状态修改后,银行类应用无法再通过返回值直接判断。当然,这类应用还会结合 root 状态、设备完整性验证、系统属性或自身反篡改机制来做环境判断。但至少,它们没法再强迫用户关闭 USB 调试和开发者选项了。
Android 17 正式版已经在 2026 年 6 月发布,谷歌也已更新开发者文档来反映这些变化。想深入了解的开发者可以直接查阅 Android 最新开发者文档。
消息来源:互联网
关于这类系统变更的更多讨论,欢迎前往 云栈社区 开发者广场参与交流。
|