我经常在iOS项目上开发一个开发服务器,它始终运行在我用于构建应用程序的同一台机器上。一个典型的情况是,我有一个轨道应用程序在http://localhost:3000
上运行,并且正在测试设备。为了在设备上测试,我需要一个解决的IP地址,以便我的应用程序可以与本地网络上的我的开发服务器通信。在Xcode中创建一个动态的预处理器宏
我知道我可以使用GCC_PREPROCESSOR_DEFINITIONS
将某些环境变量设置为预处理器宏,并且我知道我可以通过在bash脚本中运行ifconfig | grep -E 'inet.[0-9]' | grep -v '127.0.0.1' | awk '{ print $2}'
来获取生成计算机的IP地址。
我想要做的是使用一个值,如'@"http://${BUILD_MACHINE_IP_ADDRESS}:3000"'
定义GCC_PREPROCESSOR_DEFINITIONS
MY_SERVER_URL
,但我想不通的是如何使用上述ifconfig
脚本设置${BUILD_MACHINE_IP_ADDRESS}
。
我已经考虑使用运行脚本构建阶段来编辑配置文件,但是像这样的变化的后果是令人恼火的。例如,我不希望源代码管理中包含该文件,因为我的IP地址经常更改,并且会导致冲突。但是我需要将它包含在项目文件中,以便应用程序可以访问它。这将导致项目构建所需的文件,但不包含在源代码管理中,这很丑陋。
我也试着在运行脚本构建阶段尝试运行export BUILD_MACHINE_IP_ADDRESS=`ifconfig | grep -E 'inet.[0-9]' | grep -v '127.0.0.1' | awk '{ print $2}`
,但不会产生结果。
这个怎么样?'BUILD_MACHINE_IP_ADDRESS = $(ifconfig | grep -E'inet。[0-9]'| grep -v'127.0.0.1'| awk'{print $ 2}')' –
@Jaypal yes我想要做什么,但我不知道*在哪里*我会这样做,以使编译时可用的变量。 –
您可以在命令行上“导出”该变量,或者将其添加到您的配置文件中,使其每次打开终端时都可以全局使用。 –