8

我正在尝试使用 Jenkins 自动化 android 构建过程

我正在使用以下站点来实现此 站点链接

我成功地在我自己的机器上构建它。最初我收到错误说找不到 build.xml 文件(使用 ant 构建需要这个文件)。所以我执行“android更新项目”。所以它会自动为 ant 生成所有必要的文件。

现在,当我尝试将我的 repo 托管到远程服务器并尝试从另一台机器构建时,我的问题就开始了。它给出的错误是 sdk.dir 不正确。当我分析项目文件夹时,有一个名为 local.properties 的文件,其中包含我的第一台机器的 SDK 路径,这对其他机器来说是错误的。所以我将该文件添加到 gitignore。现在该文件未跟踪,因此构建失败。

那么在詹金斯从远程仓库克隆项目后,有什么方法可以自动生成 ant 所需的文件?

4

6 回答 6

3

从您链接到的网站,他们准确地解释了如何配置 sdk.dir:

配置环境

当 jenkins 用 Ant 构建你的项目时,它需要知道你的 android sdk 文件夹在哪里。为此,在您刚刚配置的 Ant 目标构建步骤上单击 Advanced,并将以下变量添加到 Properties 字段。sdk.dir=/opt/android-sdk-linux/

不要忘记将变量的值替换为构建服务器上安装 Android SDK 的正确位置。

作业配置完成。单击保存。是时候测试你的构建了。

于 2013-02-12T11:17:54.033 回答
2

我们还用 Jenkins 构建了 android 应用,还需要编辑 local.properties。

就我而言,我已通过 Jenkins 构建本身使用 SDK 的路径更新了文件。就在构建开始之前。

您可以在 linux 上使用简单的 sed 命令或在 windows 上回显内容(覆盖内容)。

示例流程:

  1. SCM - 获取资源
  2. 编辑 local.properties(如前所述)
  3. 运行蚂蚁构建

注意 - 如果您使用“Invoke Ant”,您应该在处理 local.properties 的编辑之前添加一个“Execute Shell”步骤。

我希望这有帮助。

于 2013-02-12T11:17:32.270 回答
1

是的。

如果您安装了适用于 Jenkins 的Android 模拟器插件,您可以将“创建 Android 构建文件”构建步骤添加到您的工作中。

这将自动检测 Jenkins 工作区中的任何 Android 应用程序、测试或库项目,并根据需要添加/更新 build.xml 和 local.properties 文件。

或者,如果您正在使用 Ant 构建步骤并且您的存储库中已经有 build.xml,您可以忽略创建 local.properties 文件的需要,只需sdk.dir在 Advanced Ant 选项中指定属性即可。

于 2013-02-12T11:17:15.120 回答
1

您可以在 jenkins 中配置 ant 属性。因此,您可以local.properties通过 jenkins 作业配置指定您的所有属性。

当然,您必须在 jenkins 构建服务器上安装 android sdk。

请阅读本文以获取有关如何使用 jenkins 设置 ant 属性的信息。

将 local.properties 置于源代码管理之下并不是一个好习惯,因为多个开发人员和 CI 对这些属性会有不同的值。

于 2013-02-12T11:18:11.603 回答
0

您可以将 jenkins 工作区文件夹中的 local.properties 文件编辑到正确的 sdk 路径

于 2013-02-12T11:17:06.717 回答
0

我认为您想将构建步骤添加"Create Android build files"到您的配置中。将它放在 ant build 之前。这会调用android update projectand android update lib-project。确保您在 project.properties 中使用相对路径引用了您的库依赖项。像这样:

# Project target.
target=Google Inc.:Google APIs:19
android.library.reference.1=../external-libs/google-play-services_lib
android.library.reference.2=../external-libs/android-support-v7-appcompat

添加构建步骤 - 创建 Android 构建文件

于 2014-03-23T19:47:20.200 回答