3

我经常与开发服务器一起处理 iOS 项目,开发服务器总是在我用来构建应用程序的同一台机器上运行。一个典型的场景是我正在运行一个 Rails 应用程序,http://localhost:3000并且我正在设备上进行测试。为了在设备上进行测试,我需要一个解析的 IP 地址,以便我的应用程序可以与本地网络上的开发服务器通信。

我知道我可以使用GCC_PREPROCESSOR_DEFINITIONS将一些环境变量设置到预处理器宏中,并且我知道我可以通过ifconfig | grep -E 'inet.[0-9]' | grep -v '127.0.0.1' | awk '{ print $2}'在 bash 脚本中运行来获取构建机器的 IP 地址。

我想做的是使用诸如 之类的值来定义MY_SERVER_URLGCC_PREPROCESSOR_DEFINITIONS'@"http://${BUILD_MACHINE_IP_ADDRESS}:3000"'我不知道如何${BUILD_MACHINE_IP_ADDRESS}使用ifconfig上面的脚本进行设置。

我考虑过使用运行脚本构建阶段来编辑配置文件,但是这样的更改的后果是令人恼火的。例如,我不希望该文件包含在源代码管理中,因为我的 IP 地址经常更改并且会导致冲突。但我需要将它包含在项目文件中,以便应用程序可以访问它。这将导致生成项目所需的文件,但不包含在源代码管理中,这很丑陋。

我也尝试export BUILD_MACHINE_IP_ADDRESS=`ifconfig | grep -E 'inet.[0-9]' | grep -v '127.0.0.1' | awk '{ print $2}`运行脚本构建阶段运行,但这不会产生结果。

4

1 回答 1

1

这样做的一种方法是有一个运行脚本构建阶段,该阶段编写一个 .h 文件,#define该文件是宏并包含您的源代码。

我不相信在构建期间编写 .xcconfig 会对构建产生任何影响。

由于多种原因,无法从运行脚本构建阶段导出环境变量。首先,环境变量可以从构建设置中创建,但不能反过来。其次,即使他们这样做了,子进程也不能在其父进程中设置环境变量。

对于另一种方法,您是否考虑过使用开发机器的 .local 主机名而不是数字 IP 地址?检查系统偏好设置的共享面板,它会显示您系统的域名。

于 2013-05-27T23:10:09.700 回答