Xcode:如何编译环境变量并在 Swift 中引用它们?

ssc*_*lli 5 xcode compilation api-key swift

我在 CI/CD 平台上定义了一个 API 密钥,如下所示:

export API_KEY="XXXXXXXXXX"

有没有办法可以用我的构建以某种方式编译这个变量,这样我就可以在 Swift 中引用它,而不必担心在运行时在二进制环境中定义的变量?ProcessInfo.processInfo.environment很明显我用不了,因为API key只在我的CI/CD环境中定义。我想用密钥编译我的二进制文件,以便在我分发我的应用程序时可以使用密钥。

我的用例是我想避免将 API 密钥放在我的 git 存储库中,而是在生成构建时从 CI/CD 平台获取它。如果有一种方法可以注入一个环境变量,然后将其编译为二进制文件的一部分,那将是理想的。

Som*_*o'z 4

您可以在 Xcode 构建部分执行预操作脚本 Xcode 预操作构建

这将使用以下代码修改占位符:

let apiKey : String = "<# THE_API_KEY #>"
Run Code Online (Sandbox Code Playgroud)

直接在源文件中修改代码

每次构建之前。

如果您在存档预操作中有生产密钥,则可以添加另一个密钥

示例

apiKey变量放在要访问它的文件中

Pre-action做一个脚本来替换占位符文本,例如THE_API_KEY

该脚本将如下所示

 cat $PROJECT/$PATH_TO_FILE | sed 's/THE_API_KEY/YOUR_KEY' > $PROJECT/$PATH_TO_FILE
Run Code Online (Sandbox Code Playgroud)

不要忘记清理代码以避免将 API 密钥放入您的提交中

与一个Post-action

cat $PROJECT/$PATH_TO_FILE | sed 's/YOUR_KEY/THE_API_KEY' > $PROJECT/$PATH_TO_FILE
Run Code Online (Sandbox Code Playgroud)