React Native安卓调试连接10.0.2.2而非localhost的解决方法咨询
解决React Native安卓调试器默认连接10.0.2.2而非localhost的问题
别担心,这个问题在React Native开发里挺常见的,我给你整理了几个实用的解决办法:
方法1:通过开发者菜单临时修改调试地址
这是最快的临时调整方式,适合单次调试场景:
- 打开安卓模拟器里的React Native应用
- 摇晃模拟器(或者按快捷键:Windows/Linux用
Ctrl+M,Mac用Command+M)调出开发者菜单 - 选择「Dev Settings」选项
- 找到「Debug server host & port for device」,输入
localhost:8081 - 返回应用并重启,之后调试器就会连接你指定的localhost地址了
方法2:启动命令里直接指定主机地址
如果每次启动都想默认用localhost,可以在运行命令时加上参数:
react-native run-android --host localhost
这样启动应用时,调试服务器会直接绑定localhost,模拟器里的调试连接也会自动指向这个地址。
方法3:修改项目配置实现永久生效
要是想一劳永逸,不用每次手动设置,可以修改安卓项目的默认配置:
- 打开项目里的
android/app/src/main/java/com/[你的项目包名]/MainApplication.java文件 - 在
onCreate方法中添加代码,覆盖默认的调试服务器主机:
import com.facebook.react.devsupport.DefaultDevSupportManager; import com.facebook.react.devsupport.DevSupportManager; import com.facebook.react.devsupport.DevSupportManagerFactory; // 保留原有导入内容 @Override public void onCreate() { super.onCreate(); // 添加这段代码设置默认主机为localhost ReactInstanceManager.builder().setDevSupportManagerFactory(new DevSupportManagerFactory() { @Override public DevSupportManager create(Context context, ReactInstanceManager instanceManager, DevBundleDownloader bundleDownloader, String jsBundleFile) { return new DefaultDevSupportManager(context, instanceManager, bundleDownloader, jsBundleFile) { @Override protected String getServerHost() { return "localhost"; } }; } }); // 保留原有代码... }
- 保存文件后重新运行
react-native run-android,以后默认就会连接localhost:8081了
小补充
为啥默认是10.0.2.2?因为安卓模拟器的网络环境是独立的,10.0.2.2是模拟器内置的、用来映射主机localhost的别名,大部分场景下两者效果一致,但如果你的主机localhost有特殊绑定配置,就需要手动改成localhost了。
内容的提问来源于stack exchange,提问作者Shaffiulla Khan
相关产品推荐
相关产品推荐

