Delphi FMX Mac应用切换至Application Store配置后无法联网求助
检查App Sandbox权限配置
Application Store配置默认会启用App Sandbox,而Normal配置通常未开启。需在Delphi项目设置的macOS Sandbox选项中,确认已添加网络客户端(Network Client)权限——这是FTP、SMTP这类网络请求的必需权限。权限缺失会直接导致域名解析失败、网络连接被拦截,与你遇到的nodename nor servname provided错误完全匹配。验证域名解析与IP直连的差异
尝试用IP地址代替域名测试FTP和SMTP连接:- 若IP直连正常,说明Sandbox环境下DNS解析被限制,需确认Network Client权限是否正确覆盖DNS请求(通常该权限包含此能力,但需检查Delphi配置是否同步生效)。
- 若IP直连也失败,说明是Sandbox拦截了基础网络连接,重点排查权限配置是否被正确嵌入应用签名。
用命令验证应用签名的权限
执行codesign --display --entitlements - /path/to/your.app查看打包后App的权限声明,确认是否包含com.apple.security.network.client条目。如果缺失,说明Delphi部署过程中未正确将Sandbox权限写入签名,需检查项目设置中的entitlements文件是否生成正确,或Deploy步骤是否指定了正确的权限文件。测试基础网络连通性
在Application Store配置的App中添加简单的HTTP测试逻辑(比如用TIdHTTP请求公开接口),判断是否是全局网络权限问题:- 若HTTP请求也失败,锁定为Sandbox网络权限配置错误;
- 若HTTP正常,说明Indy的FTP/SMTP组件可能存在Sandbox适配问题,需检查组件版本或显式配置Socket参数。
对比两种配置的Entitlements文件
找到项目编译输出目录或macOS子文件夹下的entitlements文件,对比Normal与Store配置的内容差异。Store配置的文件应包含Sandbox相关权限声明,若缺失则手动添加后重新打包测试。升级Indy组件版本
旧版本Indy对macOS Sandbox环境的支持可能存在缺陷,尝试升级到最新稳定版Indy,看是否能解决Sandbox下的网络连接、域名解析问题。
内容的提问来源于stack exchange,提问作者Rick Hollerich

