You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

XCode12.3环境下iOS14.3模拟器无法连接本地开发服务器如何解决?

解决方案

步骤1:给模拟器单独配置hosts映射

iOS 14.3模拟器的网络栈独立于Mac系统,默认不会读取Mac端/etc/hosts的配置,需要单独给对应模拟器添加映射:

  • 启动目标iOS 14.3模拟器
  • 打开Mac终端执行命令xcrun simctl list devices,找到当前运行的模拟器对应的UDID
  • 进入模拟器的系统配置目录:cd ~/Library/Developer/CoreSimulator/Devices/[你查到的模拟器UDID]/data/var/root
  • 编辑该目录下的hosts文件:nano hosts,添加和Mac端/etc/hosts完全一致的开发服务器映射条目,比如192.168.xxx.xxx your-dev-domain.com
  • 保存退出后,完全关闭模拟器再重新启动,此时模拟器自带的Safari应该可以正常访问该开发服务器域名

步骤2:修复nil host相关报错

该报错的核心原因是域名解析失败后,网络请求的host字段为空,调用证书信任相关方法时传入了nil值:

  • 检查项目中网络请求的URL拼接逻辑,确保所有发往开发服务器的请求都带有完整合法的host字段,避免出现域名拼写错误、仅用IP拼接无host标识的请求
  • 如果你自定义了HTTPS证书信任逻辑,在调用allowsSpecificHTTPSCertificateForHost/allowsAnyHTTPSCertificateForHost方法前增加判空校验,示例如下:
if (host != nil && host.length > 0) {
    // 执行HTTPS证书信任的相关调用
}

步骤3:确认ATS配置生效

你已配置的Allow Arbitrary Loads、Allow Arbitrary Loads in Web Content无需修改,只需确认例外域名配置正确:

  • 检查Exception Domains下的条目拼写和你使用的开发服务器域名完全一致,避免大小写不匹配、多写/漏写后缀的问题
  • 可以切换到Info.plist的源码模式核对结构,参考配置如下:
<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
    <key>NSAllowsArbitraryLoadsInWebContent</key>
    <true/>
    <key>NSExceptionDomains</key>
    <dict>
        <key>your-dev-domain.com</key>
        <dict>
            <key>NSExceptionAllowsInsecureHTTPLoads</key>
            <true/>
            <key>NSIncludesSubdomains</key>
            <true/>
        </dict>
    </dict>
</dict>

验证步骤

所有配置修改完成后,先重启Xcode和模拟器,先用模拟器自带的Safari访问开发服务器地址确认连通性,再运行项目测试,排除应用自身网络逻辑问题。如果仍无法访问,可以临时将请求地址替换为开发服务器的直连IP测试,快速定位是解析问题还是网络连通问题。


内容的提问来源于stack exchange,提问作者Matt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 14:06:07