归档期间Xcode环境变量不存在

pcrecxhr  于 2022-12-05  发布在  其他
关注(0)|答案(2)|浏览(90)

我有一个iOS应用程序,它有一个TestFlight构建方案。在这个方案中,我设置了一个名为TESTFLIGHT的环境变量,并在“运行”标签中设置了值1。另外,在构建方案的“配置文件”标签中,它选中了“使用RUn操作的参数和变量”选项,我在列表中看到了相应的EV。
当从Xcode运行应用程序时,这一功能正常,但当我制作归档文件并在设备上运行应用程序时,环境变量TESTFLIGHT不存在。我的问题是,这里是否缺少选项/方案选项卡?
EV是在“运行”选项卡上设置的,并被选择用于调试版本配置。我需要将其更改为发布吗?
谢谢大家!

u5rb5r59

u5rb5r591#

环境变量只有在您从Xcode运行应用程序时才会设定。如果您通过轻按图标直接从设备运行同一个应用程序,则不会设定这些变量。它们不是应用程序的一部分。顾名思义,它们是环境的一部分,Xcode在运行它们之前专门设置了这些变量。(如果在Mac上进行开发,可以在启动可执行文件之前在shell中设置它们,但在iPhone上不可能。)

7lrncoxx

7lrncoxx2#

将env变量放入构建设置中

如果希望环境变量在归档期间保持不变,请创建User-Defined build setting

每个目标可以有不同的值,我将其命名为RELEASE_ENV,每个目标的值为devstagingprod

添加到信息列表

我们不能直接读取这些构建设置,但是我们可以通过Info.plist访问它们。
添加一个Environment variables键,它与我们在Build Settings中创建的键完全匹配。这里我们给予它一个值$(RELEASE_ENV),这样它就可以 * 导入 * 我们之前创建的构建设置。

然后,您可以使用以下代码访问它:

let envDict = Bundle.main.infoDictionary?["LSEnvironment"] as! Dictionary<String, String>
let envStr = envDict["RELEASE_ENV"]!

print(envStr) // Outputs: "staging"

这可能是你唯一想使用!的地方之一,这样如果环境变量不在那里,你就会崩溃。

相关问题