我想为我的 Android 应用程序创建一个构建服务器。我正在与 TeamCity 合作。我的问题是:
- 作为 PC (Windows) 的构建服务器看不到 Android SDK 位置。
- 运行服务器的 PC 以正确的方式设置了 ANDROID_HOME。
- 我的应用程序使用 Gradle 构建系统。
我需要做的是让我的构建服务器在构建我的应用程序期间使用环境位置 (ANDROID_HOME)。我已经尝试过什么?
- 我在我的 Android 项目中使用了 local.properties。例如,我尝试以各种方式将 ANDROID_HOME 参数设置为 sdk.dir。
sdk.dir = ANDROID_HOME
结果 - 错误:
The SDK directory 'E:\TeamCity\buildAgent\work\a6d423a9d6e29c40\ANDROID_HOME' does not exist.
如你所见,服务器之前添加了一些奇怪的目录。同样适用于:$ANDROID_HOME 或 %ANDROID_HOME%。
- 当我手动设置路径并指向服务器上的 SDK 方向时:
sdk.dir = /Program Files (x86)/android-studio/sdk
然后服务器构建项目,一切正常。 ANDROID_HOME 环境变量设置为与此相同的位置。
- 我删除了 local.properties 并得到了这个:
SDK location not found. Define location with sdk.dir in the local.properties file or with an ANDROID_HOME environment variable.
所以我的理解是:如果我的项目中没有 local.properties,它将在 ANDROID_HOME 环境变量中查找 SDK 路径。就像我说的,在我的服务器上设置了环境变量,我已经检查了很多次。它不起作用。 (我也在 MAC X OS 上尝试过,终端将 ANDROID_HOME 显示为/Applications/Android Studio.app/sdk 但例如,只有当我在 local.properties 中硬编码路径时,Android Studio 才能构建项目。它不想接受ANDROID_HOME 变量以任何方式。)
如何在 local.properties 中设置环境变量,这样我就不必对其进行硬编码以使其工作?
最佳答案
感谢有趣的链接。这是一个伟大的项目,但在我的情况下,它并没有给我真正需要的东西。我设法通过以下方式配置我的 TaxiCity 项目:
- 每个工作人员在 PC 上都有自己的 local.properties,不会通过提交推送到 repo。
- TeamCity 从 repo 构建项目,但没有 local.properties - 因此他将寻找 ANDROID_HOME,如果找不到则给出错误。
- 因为在作为服务器的 PC 上设置 ANDROID_HOME 环境变量不起作用,我找到了一个解决方法:在 TeamCity 服务器文件 - buildAgent.properties 中设置 ANDROID_HOME 变量
- TeamCity 找不到 local.properties(因为它不在 repo 上),从位于 buildAgent.properties 文件中的 ANDROID_HOME 变量获取安装在服务器上的 SDK 位置
关于Android SDK 位置 vs 构建服务器,如何设置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22765997/