Java android gradle中的desugaring是如何构建的?

Java android gradle中的desugaring是如何构建的?,java,android,gradle,Java,Android,Gradle,我正在开发一个应用程序,需要在Android API 19+手机上运行。在与管理层的会谈中,我们想看看是否可以放弃对旧版本Android的支持,但似乎几乎可以肯定的是,我们不能只接受26+版本 最近,似乎需要使用一个库,该库使用一些Java1.8特性,而这些特性无法进行索引 我以前认为,在使用gradle构建/编制索引时,自动“去糖化”已经启用了一段时间,通过将不受支持的in-1.7操作码转换为功能等效的1.7操作码blob,这些问题将“自动”解决 但是我的构建失败了 “仅从Android N(

我正在开发一个应用程序,需要在Android API 19+手机上运行。在与管理层的会谈中,我们想看看是否可以放弃对旧版本Android的支持,但似乎几乎可以肯定的是,我们不能只接受26+版本

最近,似乎需要使用一个库,该库使用一些Java1.8特性,而这些特性无法进行索引

我以前认为,在使用gradle构建/编制索引时,自动“去糖化”已经启用了一段时间,通过将不受支持的in-1.7操作码转换为功能等效的1.7操作码blob,这些问题将“自动”解决

但是我的构建失败了 “仅从Android N(--min api 24)开始支持专用接口方法” 和类似的错误消息(如我所说,API级别26是我看到的最大的错误消息),以及:

如您所见,dexing似乎与“dexing enable desugaring=false”和“dexing min sdk=1”一起出现,我想对它们进行更改。我一直在寻找一种设置这些参数的方法,但似乎找不到一种方法来告诉gradle将正确的参数传递给dexer

以下是配置文件的相关片段:

gradle.properties:

androidBuildToolsVersion=28.0.3
androidCompileSdkVersion=28
distributionUrl = https\://services.gradle.org/distributions/gradle-5.4.1-all.zip
gradle-wrapper.properties:

androidBuildToolsVersion=28.0.3
androidCompileSdkVersion=28
distributionUrl = https\://services.gradle.org/distributions/gradle-5.4.1-all.zip
build.gradle:

buildscript {
    repositories {
        jcenter()
        mavenCentral()
        google()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:3.5.0'
        classpath 'com.google.gms:google-services:3.0.0'
    }
}

allprojects {
    repositories {
        jcenter()
        google()
    }
}

apply plugin: 'com.android.application'

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:23.0.1'
    compile 'com.android.support:mediarouter-v7:23.0.1'
    compile 'com.google.android.gms:play-services-analytics:10.0.0'
    compile 'com.google.android.gms:play-services-cast:10.0.0'
    compile 'com.google.android.gms:play-services-location:10.0.0'
    compile 'com.google.firebase:firebase-core:10.0.1'
    compile 'org.bouncycastle:bcpkix-jdk15on:1.60'
    compile 'org.bouncycastle:bcprov-jdk15on:1.60'
    ...
}

apply plugin: 'com.google.gms.google-services'

android {
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }

    compileSdkVersion androidCompileSdkVersion.toInteger()

    buildToolsVersion androidBuildToolsVersion

    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            ...
       }
    }

    defaultConfig.applicationId = "..."
}
有什么建议吗

另外,值得注意的是,这不是一个“纯粹”的android/Gradle项目,其中涉及到本机代码,以及一个我无法很好控制的构建系统,它将Gradle作为构建过程中的一个步骤来运行。如果有多种方法来配置dexer参数,我更喜欢需要修改build.gradle的东西,因为这是我唯一可以直接控制的事情,在gradle.properties中插入一些东西需要以我宁愿避免的方式对构建系统进行黑客攻击,但如果这是唯一的方法,我会接受