Android Studio 3.1.1下Instant Run因设备多用户报错的解决咨询
我之前也碰到过几乎一模一样的问题——Secure Folder自动生成的第二个用户确实会干扰Android Studio 3.1.1的Instant Run功能,这里有几个经过验证的解决办法:
临时指定安装到主用户
打开Android Studio的「Run/Debug Configurations」,找到你的应用配置,切换到「General」标签页,在「Installation options」的「Install flags」里添加--user 0。这样每次运行时,应用只会安装到主用户(也就是你看到的UserInfo{0:Anton:13}),Instant Run的增量更新就能正常生效了。如果你习惯用命令行操作,也可以手动执行安装命令:
adb install --user 0 app/build/outputs/apk/debug/app-debug.apk重置Instant Run配置
进入Android Studio的设置(Windows/Linux是File > Settings,Mac是Android Studio > Preferences),找到「Build, Execution, Deployment」>「Instant Run」,先关闭「Enable Instant Run to hot swap code/resource changes on deploy」选项,点击应用后再重新打开。有时候重置配置能解决版本兼容性带来的冲突问题。临时禁用Secure Folder(备选)
如果上面的方法都没效果,可以暂时在设备设置里禁用Secure Folder,删除那个自动创建的UserInfo{150:Secure Folder:51020030}用户,再测试Instant Run是否正常。不过这个方法会影响Secure Folder内的存储内容,所以只作为最后的备选方案。
为什么会出现这个问题?
Instant Run的增量更新机制依赖于在单一用户环境下维护应用的运行状态和补丁文件。当设备存在多个活跃用户(尤其是Secure Folder这种系统级的受限用户)时,Android Studio会尝试将应用安装到所有用户,这会导致Instant Run的补丁逻辑混乱,最终触发运行错误。指定安装到主用户后,就避免了跨用户的冲突。
内容的提问来源于stack exchange,提问作者Freudi

