【问题标题】:How to change the minSdkVersion only when running tests如何仅在运行测试时更改 minSdkVersion
【发布时间】:2016-02-04 14:11:44
【问题描述】:

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

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

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

错误:(5, 5) uses-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?

【问题讨论】:

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


    【解决方案1】:

    我是这样做的:

    1. 创建两种口味:
      • appConfig : 它是空的,所以它继承自 defaultConfig 的所有内容
      • testConfig : 它声明 minSdkVersion 18。
    2. 仅为 testConfig 添加 uiautomator 的依赖项。

    以下是我的 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'
    

    【讨论】:

    • 对我不起作用。选择 appConfigDebug 时仍然显示错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-05
    • 2015-12-30
    • 2011-01-08
    • 1970-01-01
    • 1970-01-01
    • 2011-07-22
    相关资源
    最近更新 更多