Xcode 中环境变量需在 Target 的 Run Scheme 的 Arguments 标签页中配置,支持不同环境创建独立 Scheme 并通过 Pre-action 脚本动态注入,验证方式包括代码打印、xcodebuild 查看及 LLDB 调试。
在 Xcode 项目中配置环境变量
环境变量不是全局设置的,而是绑定到具体 target 的 run scheme 中,用于控制应用启动时的行为(如 api 地址、调试开关、日志级别等)。
操作路径:Xcode 顶部菜单 → Product → Scheme → Edit Scheme… → 左侧选中 Run → 切换到 Arguments 标签页 → 展开 Environment Variables 区域。
- 点击 + 添加键值对,例如:
API_ENV=staging、ENABLE_LOGGING=YES - 勾选 Export for all processes 可让子进程(如脚本、插件、测试进程)也继承这些变量
- 不同环境(dev / staging / prod)建议创建独立的 Scheme(如 MyApp-Dev),并在对应 Scheme 中预设好变量
为不同环境创建并切换 Scheme
Scheme 是 Xcode 管理构建配置、运行参数和环境的核心机制。它比硬编码或条件编译更灵活、更安全。
- 复制当前 Scheme:Edit Scheme → 点击左下角 Duplicate → 命名为
MyApp-Dev或MyApp-Prod - 在每个 Scheme 的 Run → Info 标签中,可指定不同的 Executable(如调试版/发布版二进制)或 Working Directory
- 在 Build 标签中,可关联不同 Build Configuration(如 Debug / Release / Staging),配合预编译宏使用(如
#if STAGING)
通过 Pre-action 脚本动态注入运行参数
某些参数不适合写死在 Scheme 中(如临时 token、本地 mock 地址),可用 Run Script Pre-action 实现动态注入。
- 在 Edit Scheme → Run → Pre-actions → 点击 + → 选择 Run Script
- 输入 shell 脚本,例如:
export LOCAL_API_URL="http://localhost:8080"
export MOCK_DATA_VERSION="v2.1"
- 注意:该脚本只在 Xcode 启动 App 时执行,不影响 Archive 或命令行
xcodebuild构建 - 若需影响构建过程,请改用 Build Settings 中的 User-Defined Settings + Info.plist 占位符方式
验证与调试技巧
环境变量是否生效,不能只靠代码逻辑推测,要实测确认。
- 在 AppDelegate 或 SceneDelegate 中加一行打印:
print("API_ENV = \(ProcessInfo.processInfo.environment["API_ENV"] ?? "nil")") - 终端中查看当前 Scheme 启动的真实命令:
xcodebuild -showBuildSettings -scheme "MyApp-Dev" - 调试时在 LLDB 控制台输入:
process info查看进程环境,或expr getenv("API_ENV")直接读取 - 避免在 Release 配置中意外导出敏感变量——检查 Scheme 的 Run → Info → Build Configuration 是否为 Release,且 Environment Variables 未勾选 Export











