如何在运行测试时更改minSdkVersion

时间:2016-02-04 14:11:45

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

我有一个android studio项目,在AndroidManifest.xml和build.gradle中将minSdkVersion设置为14

现在我想编写一些自动化测试,所以我在build.gradle中添加了一些依赖项。其中之一是: androidTestCompile' com.android.support.test.uiautomator:uiautomator-v18:2.1.1'

当我尝试运行测试时,我得到:

错误:(5,5)使用-sdk:minSdkVersion 14不能小于库com.android.support.test.uiautomator / uiautomator-v18 / 2.1.1 / AndroidManifest.xml

中声明的版本18

错误:任务':app:processDebugTestManifest'执行失败。 java.lang.RuntimeException:清单合并失败:uses-sdk:minSdkVersion 14不能小于库com.android.support.test.uiautomator / uiautomator-v18 / 2.1.1 / AndroidManifest.xml中声明的版本18建议:使用工具:overrideLibrary =" android.support.test.uiautomator.v18"强制使用

我将清单文件更改为:,但这没有帮助。

如果我将build.gradle更改为minSdkVersion 18,那么它可以工作。但是我不想因为测试库而改变应用程序的minSdkVersion。

有没有办法在我运行自动化测试时将build.gradle配置为使用minSdkVersion 18,但是为应用程序保留minSdkVersion 14?

1 个答案:

答案 0 :(得分:2)

我是这样做的:

  1. 创建两种口味:
    • appConfig:它为空,因此它从defaultConfig继承全部
    • testConfig:它声明了minSdkVersion 18。
  2. 仅为testConfig添加uiautomator的依赖项。
  3. 以下是我的build.gradle

    的摘录
    defaultConfig {
            applicationId "..."
            minSdkVersion 14
            targetSdkVersion 23
            versionCode 1
            versionName "1.0"
        }
    
        productFlavors {
            appConfig {
            }
            testConfig {
                minSdkVersion 18
                testInstrumentationRunner 'android.support.test.runner.AndroidJUnitRunner'
            }
        }
    }
    
    dependencies {
    ...
        testConfigCompile 'com.android.support.test.uiautomator:uiautomator-v18:2.1.1'