Jenkins和Android构建

8
我正在尝试使用Jenkins自动化Android构建过程。我使用以下网站来实现这一点:链接到网站。我能够在自己的计算机上成功构建。最初,我遇到了一个错误,指出找不到build.xml文件(使用ant构建需要此文件)。所以我执行了"android update project"命令。因此,它会自动生成ant所需的所有必要文件。
现在我的问题开始了,当我尝试将我的repo托管到远程服务器并尝试从另一台计算机进行构建时,它给出的错误是sdk.dir不正确。当我分析项目文件夹时,发现有一个名为local.properties的文件,其中包含我的第一台计算机的SDK路径,对于其他计算机而言是错误的。所以我将该文件添加到gitignore中。现在该文件没有被跟踪,因此构建失败。
那么,在Jenkins从远程repo克隆项目后,是否有任何自动生成ant所需文件的方法呢?
6个回答

3

通过您提供的网站,他们准确地解释了如何配置sdk.dir:

环境配置

当Jenkins使用Ant构建您的项目时,它需要知道您的Android SDK文件夹在哪里。为此,请单击刚刚配置的Ant目标构建步骤中的“高级”并将以下变量添加到Properties字段中。 sdk.dir=/opt/android-sdk-linux/

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

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


我已经在Jenkins服务器中提供了正确的SDK,但不知何故它仍然只从跟踪的local.properties文件中获取路径。 - Hashim MH
确实,local.properties 绝对不应该在您的版本控制系统中被跟踪:它定义了每个开发环境特定的变量(因此得名)。 - etienne

2
我们也使用Jenkins构建Android应用程序,需要编辑local.properties文件。
在我的情况下,我通过Jenkins构建自身更新了该文件,将路径更新为SDK的路径。就在构建开始之前。
您可以在Linux上使用简单的sed命令或在Windows上使用echo命令(覆盖内容)。
示例流程:
1.获取源代码
2.编辑local.properties(如前所述)
3.运行ant构建
注意:如果您正在使用“Invoke Ant”,则应在处理编辑local.properties之前添加“Execute Shell”步骤。
希望这有所帮助。

你能再解释一下吗?我正在使用Mac。 - Hashim MH
1
这个方法是可行的,但如果你使用“Invoke Ant”,就不需要费心创建/更新local.properties文件了,因为你可以通过Ant的“sdk.dir”变量传递SDK路径。此外,当你有多个项目(例如依赖库项目或测试项目)时,这种方法并不特别具有可扩展性。 - Christopher Orr
local.properties 绝对不应该被跟踪在你的版本控制系统中:它定义了每个开发环境特定的变量(因此得名)。 - etienne

1
是的。
如果您安装了Jenkins的Android Emulator Plugin,您可以将“创建Android构建文件”构建步骤添加到您的作业中。
这将自动检测Jenkins工作区中的任何Android应用程序、测试或库项目,并根据需要添加/更新build.xml和local.properties文件。
或者,如果您正在使用Ant构建步骤并且已经在存储库中有build.xml,则可以通过在高级Ant选项中自己指定sdk.dir属性来忽略创建local.properties文件的需要。

1

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

当然,您需要在Jenkins构建服务器上安装Android SDK。

请阅读this获取有关如何使用Jenkins设置Ant属性的信息。

local.properties放在源代码管理下不是一个好的做法,因为多个开发人员和CI将具有这些属性的不同值。


0

我觉得你想要在配置中添加构建步骤"创建Android构建文件"。将其放在ant构建之前。 这会调用android update projectandroid 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

add Build Step - Create Android build files


0

你可以编辑 Jenkins 工作空间文件夹中的 local.properties 文件,将 SDK 路径更正。


1
怎么做?这并没有回答关于自动生成这些文件的问题... - Christopher Orr

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接