Xcode -在构建阶段从bash脚本设置/添加环境变量



我有2个API密钥,目前在我的代码中使用,并且也在代码中硬编码。这些键需要从代码中完全移除,并在构建阶段从Xcode外部作为环境变量添加进来。到目前为止,我已经尝试了这个脚本

export API_KEY=keyvalue

作为运行脚本,在编译阶段的编译源之前发生,在项目方案中将该脚本作为Pre - Action,并从命令行构建应用程序,但给定键的环境变量始终为null。

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)与上述设置一起,但这不起作用,以及在构建设置中为这些键设置默认值,这也不起作用。这真的可行吗?谢谢。

如果我理解对了,你误解了环境变量,如果我没有理解错,我道歉。

在应用程序运行时,您不能访问在构建过程中设置的环境变量——除非构建过程将这些值写入代码或某些配置文件。

环境变量在进程启动时传递给进程,您的代码可以访问这些变量。虽然环境变量的名称需要嵌入到代码中,但这些变量的不需要嵌入。

这听起来像你希望分发一个编译的应用程序,没有它需要运行的API密钥,然后在运行时提供这些。你可以通过使用一个小的shell脚本来设置环境变量,然后启动你的应用程序。或者你可以使用一个类似于序列号的方案,所以你的用户必须在你的应用程序第一次启动时输入API密钥(只告诉他们他们是序列号;-)),然后将这些密钥存储在一个合适的文件中(例如在你的应用程序的首选项或应用程序支持文件夹中),以任何你选择的方式进行混淆。HTH

最新更新