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

标签 android android-gradle-plugin 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,它也有效...

最佳答案

根据文档,只有一个 Build Type 被测试。默认情况下,它是调试构建类型,但这可以通过以下方式重新配置:

android {
    testBuildType "demo" 
}

同步后你的 gradle 任务应该是这样的:

./gradlew assembleFlavourOneDemoAndroidTest

请注意,正如您在最后的描述中指出的那样,将NO调试。

assembleFlavourOneDebugDemoAndroidTest

关于android - 自定义构建类型不适用于 androidTest 构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57094324/

相关文章:

android - 如何使用 Gradle 解决模块中的循环依赖?

java - 使用 espresso 在 coordinatorlayout 中滚动

android - 在 Android 中测试通知

android - Espresso : Assert a Dialog is not shown

android - FLAG_KEEP_SCREEN_ON 反向工作

Android:在 PDF 文档中嵌入压缩图像

java - 在 Android 中从 BroadcastReceiver 的 onReceive() 启动应用程序

java - 找不到 android.arch.lifecycle :compailer:1. 1.1 错误

android - onDestroyView() 之后调用 Fragment onSaveInstanceState()

android - 如何修复 "Support-v13:19.1.0 depends on libraries but is not a library itself"?