仅在 androidTest 上:仅支持以 Android O 开头的调用自定义

Only on androidTest: Invoke-customs are only supported starting with Android O

我的代码库使用了一些 Java 8 语法,例如 lambdas,并且在最长的时间内运行良好。

最近,我在一个模块中的插桩测试停止工作,出现臭名昭著的消息:

AGPBI: {"kind":"error","text":"Invoke-customs are only supported starting with Android O (--min-api 26)","sources":[{}],"tool":"D8"}

这是一个已知问题(有 引用它),但我的 compileOptions:

中有 Java 1.8
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
}

更新您的根 build.gradle 以使用最新的 android sdk(您可以使用 26 或 28)。

android {
    compileSdkVersion 28
    flavorDimensions "default"
    defaultConfig {
        applicationId "com.example.myapplication"
        minSdkVersion 25
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

这是 Android Studio 3.5 测试版中的错误。我提交了 bug with the Android Studio team,这将通过 Android Studio 3.5 beta 03 构建工具修复。

我遇到了同样的问题。再次项目和清理项目 运行 时。我的问题出在他的 org.apache.commons: commons-text:library。 改变 实施 'org.apache.commons: commons-text: 1.8' 到 实施 'org.apache.commons: commons-text: 1.6'