介绍

打包机如果可以同时打包不同的项目,且这些项目有不同的环境依赖时,就会有非常多的麻烦。

  • Java 之类的存在环境变量依赖,必须显式地在 PATH 环境变量中指定 Java 目录。
  • Android SDK 也出现了不同的版本携带的 tools 不同。

环境

  • Windows 7
  • Unity 5.3.8f2
  • Unity 5.6.6f2
  • Unity 2017.4.35f1
  • Unity 2018.4.0f1
  • Android SDK
  • Android Studio 2.x
  • Android Studio 3.x

问题

其实解决问题最重要的是要明确问题,将所有的问题都列出来并且分类,以便确定解决方案:

  • 依赖版本,即同一个软件需要同时存在不同版本。
  • 环境变量,由上一个问题引发的环境变量也会不同。
  • 人工操作,有时需要有多个人同时操作打包机。

解决方案

在已知环境与问题后,可以轻松地解决,只需要使用操作系统提供的多用户功能。

依赖版本

大部分软件在安装配置时都是使用的用户配置(将配置放在用户目录内或用户对应的注册表内)。

因此在安装 Unity、Android SDK、Android Studio 等等软件时,都可以安装到用户所在的目录,就像 Chrome 一样。

环境变量

环境变量也可以只修改用户环境变量,而不要动系统变量。

多用户登录

Windows 默认只允许一个用户远程登录,同时有多个用户登录时只会保留一个活跃的会话,可以使用下面的软件破解这个限制,让不同的用户可以同时远程登录。

这个软件用起来真是非常简单,只需要运行就可以,不需要配置。

其他方案

其实用虚拟化也是一个不错的选择,即使用虚拟机安装不同的操作系统,或是轻量级的虚拟工具 Docker。

只是虚拟化的方案性能损失较为严重,而且一般的虚拟机 IO 性能较差。而打包非常依赖 IO 性能,涉及到大量文件的读写,因此暂时排除此方案。

参考资料