安卓11版本中引入了开发者选项中的“开发模式”(Developer Mode),用于方便开发人员对应用程序进行调试。开启开发模式后,开发者可以在设备上进行更多的调试设置和操作,包括USB调试、CPU使用情况、应用数据查看和屏幕录制等等。但是有些用户反映在开启了开发模式后,无法关闭,今天我们就来详细介绍一下这个问题的原理和解决方法。
## 开启和关闭开发模式
首先,我们来了解一下如何开启和关闭开发模式。在安卓11版本中,开发模式的开启方式和之前版本的差别不大:
1. 打开设备的设置;
2. 在“关于手机”或“关于平板电脑”中找到“版本号”或“构建号码”;
3. 连续点击多次版本号或构建号码,直到出现“您现在处于开发者模式”;
4. 在设置中找到“开发者选项”,就可以看到“开发模式”的选项了。
要关闭开发模式,只需在开发者选项中将开发模式的开关关闭即可。但是有些用户反映他们在关闭开发模式后,如下图所示,发现开发模式还是开着的。
![开发者模式未能关闭](https://i.loli.net/2021/09/27/1XUZ3BejPWwbG8l.png)
## 原因分析
这是因为开启“开发模式”会触发一个内部的设置,即“用户状态(User State)已更改”。而当一个应用程序已经使用“用户状态已更改”设置,并获得了管理员或系统权限后,关闭开发模式并不能去除这个权限。这是安卓11版本引进的一个新特性,旨在保护管理员或系统权限,以防止用户在不知情的情况下移除它们。
可以参考这篇 [官方文档](https://developer.android.com/about/versions/11/privacy/changes#user-id-state) 中的描述:
> 开发者现在可以选择启用“用户身份状态更改”设置,以防止未授权的用户或应用程序更改特定用户的身份状态。启用此设置后,用户身份状态更改后这些更改将仅在下列情况下保留:
>
> 1. 更改用户身份状态的应用程序具有管理员权限;
> 2. 更改用户身份状态的应用程序具有System级别的UID。
因此,关闭开发模式并不会撤销已经授权的应用程序访问管理员权限或系统权限。如果应用程序在管理员或系统权限下运行,您需要停止或卸载该应用程序,然后重启设备,才能彻底取消该应用程序的权限。
## 解决方法
如果开启了开发模式并且关闭开关后未能成功关闭,这里有几个解决方案:
1. 重启设备:重启设备可能会解决某些应用程序仍然可以访问管理员或系统权限的问题。
2. 卸载或停用应用程序:卸载或停用某些已授权访问管理员或系统权限的应用程序可能会解决问题。您可以依次从“设置”>“应用和通知”>“所有应用”中查找您想要停用或卸载的应用程序。
3. 清除设备数据:通过清除设备所有数据,您可以从应用程序的“系统权限”白名单中删除管理员或系统权限。
以上三种方法,任选一种都可以试试,应该可以解决开发模式关闭不了的问题。
总的来说,Android系统中的“开发模式”对于开发人员是十分重要的工具,但是它也具有一定的风险,如果被滥用的话可能会导致安全问题。因此,我们在使用开发模式时,要特别注意安全性,并随时注意关闭和保护开发模式。