【问题标题】:Jenkins And android Build詹金斯和安卓构建
【发布时间】:2023-03-10 13:31:01
【问题描述】:

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

我正在使用以下网站来实现这一点 Link to site

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

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

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

【问题讨论】:

    标签: android ant jenkins


    【解决方案1】:

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

    配置环境

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

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

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

    【讨论】:

    • 我已经在 jenkins 服务器中提供了正确的 SDK,但不知何故它只从跟踪的 local.properties 文件中获取路径
    • 确实... local.properties 绝对不应该在您的 VCS 中进行跟踪:它定义了特定于每个开发人员环境的变量(因此得名)
    【解决方案2】:

    我们也是用 Jenkins 构建安卓应用,也需要编辑 local.properties。

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

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

    示例流程:

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

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

    我希望这会有所帮助。

    【讨论】:

    • 你能解释一下吗。我正在使用 mac
    • 这行得通,但如果您使用“Invoke Ant”,则无需费心创建/更新 local.properties,因为您可以在 Ant“sdk.dir”中传递 SDK 路径“ 多变的。此外,当您有多个项目(例如,取决于库项目或测试项目)时,这也不是特别可扩展。
    • local.properties 绝对不应在您的 VCS 中进行跟踪:它定义了特定于每个开发人员环境的变量(因此得名)
    【解决方案3】:

    是的。

    如果您为 Jenkins 安装了 Android Emulator Plugin,则可以将“创建 Android 构建文件”构建步骤添加到您的工作中。

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

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

    【讨论】:

      【解决方案4】:

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

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

      请阅读 this 了解如何使用 jenkins 设置 ant 属性。

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

      【讨论】:

        【解决方案5】:

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

        【讨论】:

        • 怎么样?这并没有回答有关自动生成这些文件的问题...
        【解决方案6】:

        我认为您想将构建步骤 "Create Android build files" 添加到您的配置中。将它放在 ant build 之前。 这会调用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
        

        【讨论】:

          猜你喜欢
          • 2018-10-31
          • 2020-07-04
          • 2016-07-16
          • 2014-07-18
          • 2012-10-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多