如何从构建阶段脚本更改 Xcode 构建设置环境变量?
How to change Xcode Build Settings environment vars from a Build Phase script?
是否可以在脚本的构建阶段更改 Xcode BuildSettings 环境变量?
整个思路如下:
我想发布一个带有单元测试的开源项目。
我的测试需要 "login" 和 "password" 等敏感数据,因此我无法对它们进行硬编码。
我想通过进程环境传递登录信息,以便能够执行如下操作:
let login = ProcessInfo().environment["login"]!
我找到了如何将变量从构建设置环境传递到测试过程的方法:select "Tests" 方案,转到环境变量并添加名称为 "login" 和值“$(login)”。
如果我在构建设置选项卡中为 "login" 设置正确的值——它将像我预期的那样从 ProcessInfo 访问它。
但我想要的是从 .gitignore 中的项目根文件夹脚本文件 "SetupCreds.sh" 设置 "login",因此将登录名和密码保存在其中是安全的。
所以思路是:
- 添加构建阶段脚本
- 此脚本运行 "SetupCreds.sh"
- "SetupCreds.sh" 由
export login="MyLogin
等导出行组成
如果我在构建阶段脚本中添加 echo ${login}
,它会告诉我 "login" 确实具有值 "MyLogin"。
但是这个导出不影响Build Settings环境,只影响Build Phase脚本环境。
如何执行覆盖构建设置环境变量的导出?
或者也许有另一种方法可以做我想做的事?
我已经复制了@Vladex 在评论中提到的答案,这样更容易阅读。
- 在 "Copy Resources" 脚本之后添加以下脚本阶段。
$file then
copy_target="${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.xctest/Tests.cfg"
cp -r $file $copy_target echo "Tests.cfg file copied to
${copy_target}" else echo "warning: No Tests.cfg file found. Some
tests will be ignored." fi
- 将 "Tests.cfg" 放入 gitignore。
- 创建 "Tests.cfg" 文件并用敏感或
配置特定的值。
- 在测试中使用
Bundle.for(type(of:
self).self)
得到 "Tests.cfg" url.
是否可以在脚本的构建阶段更改 Xcode BuildSettings 环境变量?
整个思路如下: 我想发布一个带有单元测试的开源项目。 我的测试需要 "login" 和 "password" 等敏感数据,因此我无法对它们进行硬编码。 我想通过进程环境传递登录信息,以便能够执行如下操作:
let login = ProcessInfo().environment["login"]!
我找到了如何将变量从构建设置环境传递到测试过程的方法:select "Tests" 方案,转到环境变量并添加名称为 "login" 和值“$(login)”。 如果我在构建设置选项卡中为 "login" 设置正确的值——它将像我预期的那样从 ProcessInfo 访问它。
但我想要的是从 .gitignore 中的项目根文件夹脚本文件 "SetupCreds.sh" 设置 "login",因此将登录名和密码保存在其中是安全的。 所以思路是:
- 添加构建阶段脚本
- 此脚本运行 "SetupCreds.sh"
- "SetupCreds.sh" 由
export login="MyLogin
等导出行组成
如果我在构建阶段脚本中添加 echo ${login}
,它会告诉我 "login" 确实具有值 "MyLogin"。
但是这个导出不影响Build Settings环境,只影响Build Phase脚本环境。
如何执行覆盖构建设置环境变量的导出? 或者也许有另一种方法可以做我想做的事?
我已经复制了@Vladex 在评论中提到的答案,这样更容易阅读。
- 在 "Copy Resources" 脚本之后添加以下脚本阶段。
$file then
copy_target="${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.xctest/Tests.cfg"
cp -r $file $copy_target echo "Tests.cfg file copied to
${copy_target}" else echo "warning: No Tests.cfg file found. Some
tests will be ignored." fi
- 将 "Tests.cfg" 放入 gitignore。
- 创建 "Tests.cfg" 文件并用敏感或 配置特定的值。
- 在测试中使用
Bundle.for(type(of: self).self)
得到 "Tests.cfg" url.