【发布时间】:2014-05-11 01:16:33
【问题描述】:
我想为我的 Android 应用程序创建一个构建服务器。我正在与 TeamCity 合作。我的问题是:
- 作为 PC (Windows) 的构建服务器看不到 Android SDK 位置。
- 运行服务器的 PC 的 ANDROID_HOME 设置正确。
- 我的应用程序使用 Gradle 构建系统。
我需要做的是让我的构建服务器在构建我的应用程序期间使用环境位置 (ANDROID_HOME)。我已经尝试了什么?
- 我在我的 Android 项目中使用了 local.properties。例如,我尝试通过各种方式将 ANDROID_HOME 参数设置为 sdk.dir。
sdk.dir = ANDROID_HOME
结果 - 错误:
SDK 目录“E:\TeamCity\buildAgent\work\a6d423a9d6e29c40\ANDROID_HOME”不存在。
如您所见,服务器之前添加了一些奇怪的目录。同样适用于:$ANDROID_HOME 或 %ANDROID_HOME%。
- 当我手动设置路径并指向服务器上的 SDK 方向时:
sdk.dir = /Program Files (x86)/android-studio/sdk
然后服务器构建项目,一切正常。 ANDROID_HOME 环境变量设置为与此相同的位置。
- 我删除了 local.properties,我得到了这个:
未找到 SDK 位置。使用 local.properties 文件中的 sdk.dir 或使用 ANDROID_HOME 环境变量定义位置。
所以我的理解是:如果我的项目中没有 local.properties,它将在 ANDROID_HOME 环境变量中查找 SDK 路径。就像我说的,在我的服务器上设置了环境变量,我已经检查了很多次。它不起作用。 (我也在 MAC X OS 上尝试过,终端将 ANDROID_HOME 显示为 /Applications/Android Studio.app/sdk 但例如,只有当我在 local.properties 中硬编码路径时,Android Studio 才能构建项目。它不想接受ANDROID_HOME 变量。)
如何在 local.properties 中设置环境变量,这样我就不必对其进行硬编码以使其工作?
【问题讨论】:
-
ANDROID_HOME不应该是sdk.dir属性的值。它是您需要使用 SDK 路径值创建的环境变量的名称。对于sdk.dir,您应该可以使用sdk.dir=c:\Program Files (x86)\android-studio\sdk -
我知道这会起作用,但它不会在其他 PC 上起作用。我的意思是当我在我的 MAC 上工作并且我的 SDK 目录是 /Applications/Android Studio.app/sdk 并且我将它推送到 GIT 存储库时,其他想要拉它的人也会拉我的 local.properties 不会编译。此外,如果我在构建服务器时从 MAC 推送我的 src.dir 会在运行时出错,因为它在 PC/Windows 上找不到 SDK(因为 PC 上的 SDK 目录是 /Program Files (x86)/android-studio/sdk 和我用 /Applications/Android Studio.app/sdk 推送了我的 local.properties)。这就是为什么最好在每台 PC 上使用 ANDROID_HOME
标签: android build sdk gradle environment-variables