Java android gradle中的desugaring是如何构建的?
我正在开发一个应用程序,需要在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: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(
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中插入一些东西需要以我宁愿避免的方式对构建系统进行黑客攻击,但如果这是唯一的方法,我会接受