Избегайте предупреждения "Варианты выбора конфликтов" при использовании тестового плагина Android без варианта выпуска

Что я хочу сделать и проблема

Я обновил свой Android Studio и плагин Gradle для Android до версии 3.0.1 и Gradle Wrapper до версии 4.1 и могу собрать и развернуть свой проект Android Gradle в версии выпуска на устройстве с помощью IDE.

  • Однако отображаются следующие предупреждающие сообщения "Gradle Sync":

    Предупреждение: в модуле "библиотека" выбран вариант "выпуск", но модули ["интеграция-тест"] зависят от варианта "отладка"

  • Проблема здесь в том, что не существует варианта release для модуля интеграционного тестирования, который использует плагин com.android.test.

  • Если я просто попытаюсь добавить тип сборки релиза (buildTypes { release {} }) к: интеграционному тестовому модулю я получаю:

    Ошибка:VariantInputs инициализирован без отчета об объединенном манифесте: DEFAULT

Подробности о проекте (упрощенно)

Проект состоит из:

  • а : библиотечный модуль
  • модуль: app, который создает apk приложения и использует модуль: library
  • модуль тестирования интеграции, который:
    • использует плагин "com.android.test"
    • зависит от модуля: app через targetProjectPath ': app' & targetVariant 'debug'
    • и содержит инструментальные тесты на: app функции
    • содержит только "главную" папку (тестовый плагин не поддерживает другие)
  • Этот проект построен после Android Test Blueprint, так как цель здесь: модуль app ничего не знает о существовании модуля интеграционного тестирования.

settings.gradle

include :library
include :app
include :integration-test

Приложение / build.gradle

apply plugin: 'com.android.application'

android {
compileSdkVersion rootProject.ext.compileSdkVersion
buildToolsVersion rootProject.ext.buildToolsVersion

publishNonDefault true

defaultConfig {
    minSdkVersion rootProject.ext.minSdkVersion
    targetSdkVersion rootProject.ext.targetSdkVersion

    applicationId "xxxxx"

    testInstrumentationRunner rootProject.ext.testInstrumentationRunner

    multiDexEnabled true
    vectorDrawables.useSupportLibrary = true
}

signingConfigs {
    release {
        keyAlias 'xxxx'
    }
}

buildTypes {
    debug {
        testCoverageEnabled = true
    }
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        signingConfig signingConfigs.release
    }
}

// This is needed by the integration-test module (i.e. com.android.test : integration test)
// in order for targetVariant to work without a flavor
publishNonDefault true

testOptions {
    unitTests {
        // Required so that logging methods do not throw not mocked exceptions in junit tests.
        returnDefaultValues = true
    }
}

compileOptions {
    sourceCompatibility rootProject.ext.sourceCompatibility
    targetCompatibility rootProject.ext.targetCompatibility
}
}

dependencies {
// Local dependencies
compile project(':library')
// i cleaned up all the other dependencies as they wouldn't help here
}

Вопрос

Кто-нибудь получал (интеграционный) тестовый модуль с использованием плагина com.android.test для запуска с Android Gradle Plugin 3.0.1 без ошибки "вариант без релиза"? Если да, то как я могу избежать этой ошибки или как добавить такой вариант выпуска в модуль на основе тестового плагина Android (если это вообще имеет смысл)?

1 ответ

Я также получал

VariantInputs инициализирован без объединенного отчета о манифесте: DEFAULT.

Затем я точно следовал тому, что изложено в https://github.com/googlesamples/android-testing-templates/tree/master/AndroidTestingBlueprint

Ошибка ушла, когда я удалил release buildType из блока `buildTypes' в файле Gradle тестового модуля. Из этого:

buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}

в

buildTypes {
}