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

i5desfxk  于 2022-11-17  发布在  其他
关注(0)|答案(1)|浏览(178)

我有两个API键,它们目前在我的代码中使用,也被硬编码在代码中。这些键需要从代码中完全删除,并在构建阶段作为环境变量而不是从Xcode外部添加。到目前为止,我已经尝试过使用这个脚本

export API_KEY=keyvalue

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

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)和上面的沿着,但没有工作,以及在构建设置中为这些键设置默认值,这也没有工作。这实际上是可能的吗?谢谢。

u3r8eeie

u3r8eeie1#

如果我没理解错的话,你误解了环境变量,如果我理解错的话,我道歉。
当应用程序执行时,您无法存取建置行程序期间所设定的环境变量,除非建置行程序将值写入程式码或某些组态档。
环境变量在进程启动时传递给进程,您的代码可以访问这些变量。虽然环境变量的 * 名称 * 需要嵌入到您的代码中,但这些变量的 * 值 * 不需要。
这听起来像是您希望分发一个编译后的应用程序,但不提供运行所需的API密钥,然后在运行时提供这些密钥。您可以使用一个小shell脚本来设置环境变量,然后启动应用程序。或者您可以使用类似于序列号的方案,这样您的用户必须输入API密钥(只需告诉他们它们是序列号;- )),然后将其存储在一个合适的文件中(例如,在应用的首选项或应用支持文件夹中),并以您选择的任何方式进行模糊处理。HTH

相关问题