【发布时间】:2021-05-27 01:28:21
【问题描述】:
我的代码中当前使用了 2 个 API 密钥,并且在代码中也进行了硬编码。这些键需要从代码中完全删除并作为环境变量添加,而不是在构建阶段从 Xcode 外部添加。到目前为止,我已经尝试过这个脚本
export API_KEY=keyvalue
作为在构建阶段编译源之前发生的运行脚本,将该脚本作为项目方案中的 Pre Action,并使用此从命令行构建应用程序,但给定键的环境变量始终空。
xcodebuild -project MyProject.xcodeproj \
-scheme "My Scheme" \
-sdk iphoneos \
-destination 'platform=iOS,name=<devicename>' \
-derivedDataPath './output' \
API_KEY='KEY' \
SECOND_API_KEY='KEY' \
当像这样手动构建项目时,我可以看到与所有其他设置一样正确导出的密钥,但似乎无法使用 NSProcessInfo.processInfo.environment objectForKey:@"API_KEY" 或使用 NSUserDefaults 访问它们。我还尝试在 Xcode 中编辑该方案,以便将环境变量设置为 API_KEY = $(API_KEY) 以及上述但不起作用,以及在构建设置中为这些键设置默认值也不起作用.这实际上可以做到吗?谢谢。
【问题讨论】:
-
您希望在应用运行时设置这些环境变量吗?或者您是否试图在构建时捕获它们的值以防止将它们签入源代码控制?我对您使用
NSProcessInfo访问构建时环境变量的愿望感到困惑。 -
只需要在构建应用程序时设置变量,以便无论何时运行它们都可以从
NSProcessInfo.processInfo.environment访问。通常,您会在 Xcode 中使用 Edit Scheme > Run >Environment Variables 设置环境变量,但 API 密钥仍会在代码中,因此需要在构建应用程序时使用应用程序外部的脚本手动设置它们。类似的东西,除了这是用于测试:stackoverflow.com/questions/23284829/…
标签: ios objective-c xcode bash