在Maven构建期间安装Android SDK

时间:2013-08-15 17:20:02

标签: java android maven robolectric

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

1 个答案:

答案 0 :(得分:0)

Robolectric和maven-android-plugin都需要SDK。 Android插件需要构建工具/ adb,而Robolectric需要相应的android.jar。

因此,您必须为:

创建maven任务/目标
  1. 从某个网址下载SDK zip。
  2. 在测试计算机上解压缩目录。
  3. 更新POM的android.sdk.path属性,指向sdk目录。
  4. 我发现的一些片段可能会有所帮助:

    下载:

    <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>