谷歌在Android 17里居然藏了个“大招”。近期有开发者发现,谷歌悄悄在Android 17中禁止应用读取开发者选项和USB调试状态,不论设备是否启用开发者模式,应用读取此类信息将始终返回0 (代表关闭),而非1(代表已启用)。

事实上,有相当多的App会检测用户的设备是否开启开发者模式,一旦开启会要求关闭,否则App将无法使用。谷歌在代码提交说明中直言,App无需检测开发者模式的状态,相关检测逻辑在Android 17会失去作用。
那么问题就来了,为什么有些App希望知道你的设备是否开启了开发者模式,谷歌又为何认定这类信息对App不重要呢?
开发者模式作为Android预留的调试接口集合,是通过ADB(Android Debug Bridge)协议实现设备与开发工具的通信,它就是给Android开发者用的,核心功能是应用开发阶段的性能监测、错误追踪和硬件适配。
只不过早期的Android并不完善,不仅需要开启开发者模式中的USB调试,与电脑连接时才能下载App,甚至连备份联系人都得打开。所以Android的开发者模式在实践过程中不仅仅为开发者服务,普通用户往往也会经常使用。

当普通用户用得多了,问题也就随之而来。开启开发者模式后,Android系统会开放/system/app/目录的读写权限,解除对系统级设置的保护锁,不仅有可视化调试工具、开放CPU调度策略、内存分配机制等底层参数,还会暴露窗口管理、动画渲染等系统服务的控制接口。
开发者模式中的"选择模拟位置信息应用"权限,可能会被恶意应用利用实现位置欺诈;USB调试模式则会带来中间人攻击,恶意程序可通过ADB命令窃取通讯录、短信等敏感数据;模拟点击权限会被游戏外挂利用,许多所谓的游戏辅助就是借助开发者模式实现自动打怪、自动执行任务。
为了保护用户,有相当多的App会主动检测设备是否开启开发者模式,一旦开启则终止进程。比如手游,尤其是竞技类或提供玩家交易系统的游戏,一旦检测到开发者模式,就认为可能会被用来作弊或修改游戏数据,直接禁止进入游戏或是提示异常。

同理,金融类App也对开发者模式严防死守,支付宝、云闪付、银行App都可能出现检测到开发者模式即关闭支付功能、提示风险环境,甚至直接拒绝运行的情况。其实不仅仅是第三方开发者,谷歌自己也不希望普通用户使用开发者模式,从Android 4.2.1版本开始,开发者选项就被隐藏起来,需要用户连续点击系统版本号才能激活。
可问题在于,“祖宗之法不可变”,自由开放是Android的底色,开发者模式向普通用户开放也被Android社区视为自由的象征。所以谷歌只能将开发者模式的开关藏起来,却不能直接告诉用户“不想让你用”。偏偏随着Android生态的价值与日俱增,它面临的安全风险也同步上升,开发者模式已然成为Android安全体系的薄弱环节。
再加上,谷歌也怕用户在开发者模式中胡乱操作,误改参数,把系统弄出问题,回头还得OEM合作伙伴兜底。既然不能直接挑明限制用户权利,却要维护Android生态的安全、稳定,所以谷歌选择了不当恶人,转而让银行、支付、游戏应用的开发者逼迫用户关闭开发者模式。

对于这些App的开发者而言,Android 17一旦大规模推送,他们将无法轻松完成设备环境检测。为了图省事,他们会直接告诉用户永久性关闭开发者模式,否则将拒绝提供服务。以目前移动支付和手机游戏的普及程度,相信绝大多数人都不会认为开发者模式代表的“自由”更重要。
如此一来,谷歌就能兵不血刃地劝导用户放弃使用开发者模式,让后者回归本来的用途。毕竟经过十余年的完善,现在的Android系统已经足够完善,不需要用户自己瞎折腾了。
【本文图片来自网络】
