Избегайте предупреждения "Варианты выбора конфликтов" при использовании тестового плагина 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 {
}