Моя кодовая база использует некоторый синтаксис Java 8, такой как лямбда-выражения, и долго работала нормально.
Недавно мои инструментальные тесты в модуле перестали работать с печально известным сообщением:
AGPBI: {"kind": "error", "text": "Invoke-обычаи поддерживаются только
начиная с Android O (--min-api 26) "," sources ": [{}]," tool ":" D8 "}
Это известная проблема (существует много вопросов , ссылающихся на нее), но у меня есть Java 1.8 в моем compileOptions
:
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
Эта проблема обнаруживается ТОЛЬКО в инструментальных тестах (т. Е. AndroidTest). Это хорошо с юнит-тестами и с самим приложением. Я уже прокомментировал все тесты из инструментальных тестов, но проблема остается.
Мои модульные тесты и тесты Android имеют одинаковые зависимости. Я перешел на тесты AndroidX, но проблема остается.
dependencies {
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.google.android.gms:play-services-gcm:16.1.0'
androidTestImplementation 'org.mockito:mockito-core:2.27.0'
androidTestImplementation 'androidx.test:core:1.1.0'
androidTestImplementation 'androidx.test:runner:1.1.1'
androidTestImplementation 'androidx.test:rules:1.1.1'
androidTestImplementation 'androidx.test.ext:junit:1.1.0'
androidTestImplementation 'androidx.test.ext:truth:1.1.0'
androidTestImplementation 'com.google.truth:truth:0.42'
testImplementation 'org.mockito:mockito-core:2.27.0'
testImplementation 'androidx.test:core:1.1.0'
testImplementation 'androidx.test:runner:1.1.1'
testImplementation 'androidx.test:rules:1.1.1'
testImplementation 'androidx.test.ext:junit:1.1.0'
testImplementation 'androidx.test.ext:truth:1.1.0'
testImplementation 'com.google.truth:truth:0.42'
}
Я использую последние версии компиляции и назначения (я также пробовал 26 и 27), а также инструменты для сборки. Минимальная версия SDK - 14, и должна быть.
compileSdkVersion 28
buildToolsVersion '29.0.0 rc3'
defaultConfig {
minSdkVersion 14
targetSdkVersion 28
}