仅在androidTest上:仅从Android O开始支持Invoke-customs

时间:2019-05-13 01:07:19

标签: java android android-gradle android-testing

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

最近,我在模块中执行的检测已停止处理臭名昭著的消息:

  

AGPBI:{“种类”:“错误”,“文本”:“仅支持调用习惯   从Android O(--min-api 26)开始,“源”:[{}],“工具”:“ D8”}

这是一个已知的问题(有many questions引用了它),但是我的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
}

3 个答案:

答案 0 :(得分:1)

这是Android Studio 3.5 Beta中的错误。我提交了bug with the Android Studio team,并将通过Android Studio 3.5 beta 03生成工具解决。

答案 1 :(得分:1)

我有同样的问题。当项目和清理项目再次运行时。我的问题出在他的org.apache.commons:commons-text:library。 更改 实现'org.apache.commons:commons-text:1.8' 至 实施'org.apache.commons:commons-text:1.6'

答案 2 :(得分:0)

更新您的root 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"
    }