使用gradle构建系统创建测试Android apk

时间:2013-08-20 08:03:06

标签: android gradle android-studio robotium build.gradle

我正在将我的android项目迁移到gradle构建系统,我无法从我的Integration Test Android项目中导入我的Android项目。

我正在使用具有多个android-libraries的多项目配置,并且它工作得很好,但是我在使用多项目设置设置我的测试项目时遇到了问题。出于外部原因,我需要继续使用这种结构。

MyProject/
 | settings.gradle
 + MyApp/
    | build.gradle
    | src
    | res
    | libs
 + Instrumentation-Tests/
    | build.gradle
    | src
    | res
    | libs

我当前的配置文件如下:

settings.gradle:

include ':MyApp', 'Instrumentation-Tests'

MyAppp /的build.gradle:

apply plugin: 'android'

repositories {
    mavenCentral()
}

dependencies {
    compile files('.....jar')
    compile project('....')
    compile 'com.android.support:support-v4:13.0.+'
}

android {
    compileSdkVersion 17
    buildToolsVersion "17.0.0"

    defaultConfig {
        minSdkVersion 11
        targetSdkVersion 16
    }

    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']
            resources.srcDirs = ['src']
            aidl.srcDirs = ['src']
            renderscript.srcDirs = ['src']
            res.srcDirs = ['res']
            assets.srcDirs = ['assets']
        }

    }
}

最后我的Instrumentation-Tests/build.gradle

apply plugin: 'android'

repositories {
    mavenCentral()
}

dependencies {
    compile project(':MyApp')
    compile files('.....jar')
    compile 'com.android.support:support-v4:13.0.+'
}

android {
    compileSdkVersion 17
    buildToolsVersion "17.0.0"

    defaultConfig {
        minSdkVersion 11
        targetSdkVersion 16
    }

    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']
            resources.srcDirs = ['src']
            aidl.srcDirs = ['src']
            renderscript.srcDirs = ['src']
            res.srcDirs = ['res']
            assets.srcDirs = ['assets']
        }
    }
}

当我运行gradle compileDebug时,项目MyApp被正确编译(及其所有模块),但Instrumentation-Tests编译失败,因为它无法找到{{1}中定义的android类}。

我已阅读文档和大量帖子,但我无法使其正常工作,我也尝试过使用:

MyApp

声明依赖时。

有人有同样的问题吗? 我想将compile(project(':MyApp')) { transitive = true } 项目依赖项的输出包含到MyApp编译的类路径中,但我不知道是否可以使用android Instrumentation-Tests插件。

1 个答案:

答案 0 :(得分:1)

这不起作用(截至目前),因为您只能将库项目指定为依赖项。

对于compile project(':MyApp') 的情况,MyApp 应该是一个Android库项目,其中包含apply plugin: 'android-library' build.gradle 。这当然没有意义。

要有一个单独的测试项目,你需要其他东西(我正在研究自己)。

编辑:考虑使用Gradle进行测试,请使用Ant。