【问题标题】:Install Android SDK during Maven build在 Maven 构建期间安装 Android SDK
【发布时间】:2013-08-15 17:20:02
【问题描述】:

我正在尝试使用 Maven 和 Robolectric 对我的 Android 应用程序进行自动化测试。我遇到的问题是我不会在本地机器上运行测试,并且 Android SDK 不会安装在运行测试的机器上。我已经使用 maven-dependency-plugin 从我们的存储库中获取 sdk 并在进程资源阶段将其解压缩,问题是这发生在需要访问文件之后。当我尝试使用 apk 打包时,它永远不会下载 SDK,因为它找不到 SDK。所以我的问题是:是否可以在构建中发生任何其他事情之前触发此下载?如果有人对如何在构建时正确安装 sdk 有任何了解,将不胜感激。如果我可以添加任何其他信息,请告诉我。

【问题讨论】:

  • 简短的回答是否定的,这在 maven 预定义的生命周期内是不可能的。
  • 您能解释一下原因吗?我不擅长 Maven 之类的。

标签: java android maven robolectric


【解决方案1】:

Robolectric 和 maven-android-plugin 都需要 SDK。 Android插件需要build tools/adb,而Robolectric需要对应的android.jar。

因此,您必须为以下各项创建 maven 任务/目标:

  1. 从某个 url 下载 SDK zip。
  2. 在测试机上解压压缩包,在一个目录中。
  3. 更新 POM 的 android.sdk.path 属性,使其指向 sdk 目录。

我找到的一些 sn-ps,可能会有所帮助:

下载:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>wagon-maven-plugin</artifactId>
    <version>1.0-beta-3</version>
    <executions>
        <execution>
            <id>download-android-sdk</id>
            <phase>pre-integration-test</phase>
            <goals>
                <goal>download-single</goal>
            </goals>
            <configuration>
                <url>http://dowloadsite.com/<url>
                <fromFile>/downloads/sdk.zip</fromFile>
                <toDir>${project.build.directory}/sdk</toDir>
            </configuration>
        </execution>
    </executions>
</plugin>

解压:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-antrun-plugin</artifactId>
    <version>1.6</version>
    <executions>
        <execution>
            <id>unpack-sdk</id>
            <phase>pre-integration-test</phase>
            <configuration>
                <tasks>
                    <unzip src="${project.build.directory}/sdk/sdk.zip" dest="${project.build.directory}/sdk/" />
                </tasks>
            </configuration>
            <goals>
                <goal>run</goal>
            </goals>
        </execution>
    </executions>
</plugin>

【讨论】:

  • 我实际上已经完成了所有这些事情。正如我所提到的,问题是直到需要它之后才会发生,但我将尝试您列出的预集成测试阶段。
  • 不走运改变阶段。
  • @user2483079 validate 阶段怎么样?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-21
  • 1970-01-01
  • 2012-06-05
相关资源
最近更新 更多