React Native包服务器无法连接三星Galaxy S21 Ultra API 28模拟器
报错截图:
问题根因分析
- API 28及以上安卓版本默认禁止http明文流量传输,React Native开发服务器默认走http协议请求资源,三星S21 Ultra定制模拟器镜像对该限制的执行更严格,因此同API版本的其他品牌模拟器可正常访问,三星镜像会直接拦截请求
- 你使用的Android Studio 3.6.1与项目配置的gradle插件3.6.2版本小版本不匹配,可能导致打包时自动注入的开发服务器访问配置异常
- 新创建的模拟器默认未配置端口转发,无法将本地8081端口的请求映射到主机运行的RN包服务器
- 三星S21 Ultra模拟器默认的主机IP映射(10.0.2.2)失效,无法通过默认地址访问主机服务
解决方案
按优先级依次执行以下操作:
- 开启明文流量权限
打开项目下app/src/main/AndroidManifest.xml,在标签中添加属性: android:usesCleartextTraffic="true" - 配置端口转发
确保只有当前S21模拟器连接adb的状态下,终端执行命令:adb reverse tcp:8081 tcp:8081 - 手动指定开发服务器地址
启动模拟器上的RN应用,出现报错后摇一摇设备调出开发者菜单,依次选择Settings → Debug server host & port for device,输入你主机的局域网IP加8081端口,格式为[你的主机IP]:8081,保存后重启应用即可 - 对齐gradle与Android Studio版本
将项目级build.gradle中的gradle插件版本调整为和AS 3.6.1匹配的版本:
修改后同步gradle,重新打包安装到模拟器即可classpath 'com.android.tools.build:gradle:3.6.1' - 异常场景兜底操作
如果以上操作都无效,打开AVD管理器,选择S21 Ultra模拟器执行Wipe Data擦除所有数据后冷启动,再重新执行上述步骤即可
内容的提问来源于stack exchange,提问作者Rajendra
相关产品推荐
相关产品推荐


