在编译时获取开发机器的名称?

时间:2016-08-29 12:16:16

标签: ios xcode build-process

我正在构建一个与服务器通信的iOS应用程序。我们有一个测试/登台服务器,一个生产服务器,每个开发人员都有一个服务器的本地实例用于开发。

我添加了一些简单的逻辑,根据我们是运行TestFlight构建,App Store构建还是调试构建(用于开发)来配置服务器的地址。对于开发构建,应用程序尝试命中localhost,如果我们在模拟器上运行,这一切都很好,但如果我们在设备上运行则不是那么好。

我知道ngrok,这是一种可能的解决方案,但由于暴露的URL是部分随机生成的(至少对于免费版本),它不太适合。我认为可行的开发方法可能是在编译时检查开发机器的名称并插入此值。但我不知道如何实现这一目标,如果可能的话。我记得在我的Java时代使用ant / maven和环境属性文件进行编译时变量过滤,但我想知道在Xcode中是否有一种相当简单的方法来实现这一点。

有人可以对此有所了解吗?

1 个答案:

答案 0 :(得分:0)

所以我继续挖掘,并采用以下解决方案。这里的许多其他帖子都涉及到这方面的要素。

  1. 我在我的网站上添加了一个名为HostNameMacroHeader.h的新头文件 项目
  2. 我在构建之前添加了“运行脚本”阶段,之前     '编译来源'阶段。该脚本包含以下内容:

    echo "//***AUTOGENERATED FILE***" > ${SRCROOT}/MyAppName/HostNameMacroHeader.h 
    echo "#define BUILD_HOST_NAME @\"`hostname`\"" >> ${SRCROOT}/MyAppName/HostNameMacroHeader.h
    
  3. 然后在我的实现中,我想使用服务器地址,我使用生成的BUILD_HOST_NAME宏。

    这是一个有点hacky的解决方案,但它现在完成了这项工作。欢迎提出建议和更清洁的版本。