自定义构建类型不适用于androidTest构建

时间:2019-07-18 12:20:02

标签: android android-gradle android-testing

嗨,我正在尝试根据我在以下定义的风格和自定义构建类型来构建androidTest APK:

 productFlavors {
    FlavourOne {
        applicationIdSuffix ".live"
        buildConfigField 'String', 'SERVER_BASE_URL', '"http://live.com"'

    }
    FlavourTwo {
        applicationIdSuffix ".demo"
        buildConfigField 'String', 'SERVER_BASE_URL', '"http://demo.com"'
    }

}

buildTypes {
        debug {
            minifyEnabled false
            // shrink code (remove unused classes and methods) - note that it falls back to experimental shrinker for Instant Run
            shrinkResources false // don't strip unused res files
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro', 'proguard-rules-debug.pro'
            testProguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules-test.pro'
        }
        release {
            minifyEnabled true // shrink code (remove unused classes and methods)
            shrinkResources false // don't strip unused res files
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.release
        }
        debugDemo {
            applicationIdSuffix '.demo'
            versionNameSuffix '-DEMO'
            minifyEnabled false
            // shrink code (remove unused classes and methods) - note that it falls back to experimental shrinker for Instant Run
            shrinkResources false // don't strip unused res files
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro', 'proguard-rules-debug.pro'
            testProguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules-test.pro'
        }
        demo {
            applicationIdSuffix '.demo'
            versionNameSuffix '-DEMO'
            minifyEnabled true // shrink code (remove unused classes and methods)
            shrinkResources false // don't strip unused res files
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.release
        }

当我运行gradlew assembleFlavourOneDebugDemoAndroidTest时,我立即收到一条错误消息

Task 'assembleFlavourOneDebugDemoAndroidTest' not found in root project 'MyProject'.

如果我省略自定义buildType并仅执行assembleFlavourOneAndroidTest,它就可以正常工作。如果仅assembleFlavourOneDebugANdroidTest ...

2 个答案:

答案 0 :(得分:2)

仅根据文档 一个 进行测试。默认情况下,它是 debug 构建类型,但是可以使用以下方式重新配置:

android {
    testBuildType "demo" 
}

,同步后您的gradle任务应如下所示:

./gradlew assembleFlavourOneDemoAndroidTest

请注意,如您在最后的说明中所指出的,将进行调试。

  

assembleFlavourOne Debug DemoAndroidTest

答案 1 :(得分:0)

我假设某些声明缺少initWith指令-

因为任何测试版本都严格取决于initWith debug

使用initWith release时,不会生成测试任务。

debugDemo {
    initWith debug
    ...
}
  

通过initWith属性,您可以从其他构建类型中复制配置,然后仅配置要更改的设置。

相关问题