Expo项目在小米Poco M6升级HyperOS后出现DETECT_SCREEN_CAPTURE权限错误
解决小米HyperOS 2.0.3.0(Android 15)下Expo Go的DETECT_SCREEN_CAPTURE权限错误
核心问题分析
小米HyperOS 2.0.3.0基于Android 15,该系统对DETECT_SCREEN_CAPTURE权限管控更严格——此权限属于signature|privileged级别,普通第三方App(如Expo Go)无法通过常规ADB命令直接获取,这是Native模块加载失败、进而引发"main未注册"错误的根本原因。
解决方案
1. 更新Expo Go至最新版本
Expo团队会跟进新Android版本的权限适配,直接前往应用商店或Expo官方渠道安装最新版Expo Go,多数情况下能直接解决该权限兼容问题。
2. 使用Expo Development Build替代Expo Go
如果Expo Go暂未完成适配,可自行构建自定义开发包:
- 在项目
app.json中,给android.permissions数组添加权限声明:"android": { "permissions": [ "android.permission.DETECT_SCREEN_CAPTURE", // 保留项目原有其他权限 ] } - 运行构建命令生成开发版APK:
eas build --profile development --platform android - 将生成的APK安装到手机,自定义开发包可正常申请并获取该权限。
3. 修正ADB授权命令(针对Expo Go)
若坚持使用Expo Go,尝试用正确包名执行ADB授权:
- 先开启手机开发者选项中的「USB调试(安全设置)」
- 执行授权命令:
(注:Expo Go正式包名为adb shell pm grant expo.modules.exponent android.permission.DETECT_SCREEN_CAPTUREexpo.modules.exponent,之前授权失败大概率是包名错误)
4. 临时禁用屏幕捕获相关模块
如果项目中使用了expo-screen-capture等依赖该权限的模块,可暂时移除相关代码或禁用模块功能,先确保项目能正常启动,待Expo Go适配完成后再恢复。
附带解决"main未注册"错误
该错误是权限问题导致Native模块加载失败的连锁反应,解决权限问题后通常会自动消失。若仍存在:
- 清除Metro缓存并重启服务器:
npx expo start --clear - 确认Metro服务器在项目根目录启动,避免路径错误。
内容的提问来源于stack exchange,提问作者httperror505
相关产品推荐
相关产品推荐

