【问题标题】:Android SDK location vs Build Server, how to set it?Android SDK location vs Build Server,如何设置?
【发布时间】:2014-05-11 01:16:33
【问题描述】:

我想为我的 Android 应用程序创建一个构建服务器。我正在与 TeamCity 合作。我的问题是:

  1. 作为 PC (Windows) 的构建服务器看不到 Android SDK 位置。
  2. 运行服务器的 PC 的 ANDROID_HOME 设置正确。
  3. 我的应用程序使用 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


【解决方案1】:

感谢有趣的链接。这是一个很棒的项目,但在我的情况下,它并没有给我真正需要的东西。我设法通过以下方式配置了我的 TaxiCity 项目:

  1. 每个工作人员在 PC 上都有自己的 local.properties,这些属性不会通过提交推送到 repo。
  2. TeamCity 从 repo 构建项目,但没有 local.properties - 因此他会寻找 ANDROID_HOME 或如果找不到它会给出错误。
  3. 由于在作为服务器的 PC 上设置 ANDROID_HOME 环境变量不起作用,我找到了一种解决方法:在 TeamCity 服务器文件 - buildAgent.properties 中设置 ANDROID_HOME 变量
  4. TeamCity 找不到 local.properties(因为它不在 repo 上),从 buildAgent.properties 文件中的 ANDROID_HOME 变量获取安装在服务器上的 SDK 位置

【讨论】:

  • 设置 ANDROID_HOME 对我有用 - 我必须先安装 Android Studio 并在构建服务器上下载 android SDK。
【解决方案2】:

我希望这将有助于解决问题: https://github.com/JakeWharton/sdk-manager-plugin

【讨论】:

  • 有趣,我正在测试它。
  • 这几乎可以完美运行。但专用于 Linux/MAC。在构建任务上构建服务器会创建具有正确路径的 local.properties 到 sdk.dir 但斜线方向错误。 (“\”而不是“/”)我必须手动更改它,然后它从现在开始工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-05
  • 1970-01-01
相关资源
最近更新 更多