Android SDK 位置 vs 构建服务器,如何设置?

标签 android build sdk gradle environment-variables

我想为我的 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

结果 - 错误:

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 项目:

  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 SDK 位置 vs 构建服务器,如何设置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22765997/

相关文章:

android - 如何在 Android 中捕获输出音频流?

android - 带有Gradle Release插件的Android构建

android - 如何制作 ImageView "match_parent"?

java - Maven 找不到本地依赖项

ios - 检查 iOS SDK 版本的预处理器和/或宏方法?

ios - Facebook 登录失败,代码为 190 - "The access token was invalidated on the device"

android - 在android中的不同 Activity 中设置按钮上的时间

groovy - Gradle zip 插件,如何在 zip 中创建空文件夹?

build - 如何在构建时在介子中运行自定义命令?

opencv - Kinect - 物体识别和计算物体的3D坐标