Android InvokedDynamic需要--min sdk版本>;=26

Android InvokedDynamic需要--min sdk版本>;=26,android,android-studio,android-gradle-plugin,build.gradle,Android,Android Studio,Android Gradle Plugin,Build.gradle,今天下载了studio 3.0 beta 2.0版本,之后尝试在其中打开一个现有项目,遇到了一些困难,其中大部分我可以借助Google和Stack Overflow解决,但这一个我无法解决 Error:Execution failed for task ':app:transformClassesWithDexBuilderForDebug'. > com.android.build.api.transform.TransformException: org.gradle.tooling.

今天下载了studio 3.0 beta 2.0版本,之后尝试在其中打开一个现有项目,遇到了一些困难,其中大部分我可以借助Google和Stack Overflow解决,但这一个我无法解决

Error:Execution failed for task ':app:transformClassesWithDexBuilderForDebug'.
> com.android.build.api.transform.TransformException: org.gradle.tooling.BuildException: com.android.dx.cf.code.SimException: invalid opcode ba (invokedynamic requires --min-sdk-version >= 26)
还发布了我的应用程序gradle

apply plugin: 'com.android.application'
   android {
    compileSdkVersion 26
    buildToolsVersion "26.0.1"

defaultConfig {
    applicationId "com.intersoft.snappy"
    minSdkVersion 19
    targetSdkVersion 22
    multiDexEnabled true
    versionCode 1
    versionName "1.0"
}
buildTypeMatching 'dev', 'debug'
buildTypeMatching 'qa', 'debug'
buildTypeMatching 'rc', 'release'
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}
sourceSets { main { assets.srcDirs = ['src/main/assets', 'src/main/assets/'] 
} }
packagingOptions {
    exclude 'META-INF/DEPENDENCIES.txt'
    exclude 'META-INF/LICENSE.txt'
    exclude 'META-INF/NOTICE.txt'
    exclude 'META-INF/NOTICE'
    exclude 'META-INF/LICENSE'
    exclude 'META-INF/DEPENDENCIES'
    exclude 'META-INF/notice.txt'
    exclude 'META-INF/license.txt'
    exclude 'META-INF/dependencies.txt'
    exclude 'META-INF/LGPL2.1'
}
}
repositories {
mavenCentral()
mavenLocal()
jcenter()
maven { url "https://plugins.gradle.org/m2/" }
maven { url "https://s3.amazonaws.com/repo.commonsware.com" }
maven { url "https://jitpack.io" }
maven { url 'https://dl.bintray.com/ashokslsk/CheckableView' }
maven { url "https://maven.google.com" }

}
android {
useLibrary 'org.apache.http.legacy'
}
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'com.android.support:appcompat-v7:26.0.1'
implementation 'com.github.mrengineer13:snackbar:1.2.0'
implementation 'com.android.support:recyclerview-v7:26.0.1'
implementation 'com.android.support:cardview-v7:26.0.1'
implementation 'com.android.support:design:26.0.1'
implementation 'com.android.support:percent:26.0.1'
implementation 'dev.dworks.libs:volleyplus:+'
implementation 'com.google.guava:guava:21.0'
implementation 'com.facebook.fresco:fresco:1.0.1'
implementation 'com.github.bumptech.glide:glide:3.7.0'
implementation 'com.wdullaer:materialdatetimepicker:3.1.1'
implementation 'com.squareup.picasso:picasso:2.5.2'
implementation 'com.github.stfalcon:frescoimageviewer:0.4.0'
implementation 'com.github.piotrek1543:CustomSpinner:0.1'
implementation 'com.android.support:multidex:1.0.2'
implementation 'com.github.satyan:sugar:1.4'
implementation 'com.hedgehog.ratingbar:app:1.1.2'
implementation project(':sandriosCamera')
implementation('org.apache.httpcomponents:httpmime:4.2.6') {
    exclude module: 'httpclient'
}
implementation 'com.googlecode.json-simple:json-simple:1.1'
}

afterEvaluate {
tasks.matching {
    it.name.startsWith('dex')
}.each { dx ->
    if (dx.additionalParameters == null) {
        dx.additionalParameters = ['--multi-dex']
    } else {
        dx.additionalParameters += '--multi-dex'
    }
}
}
subprojects {
project.plugins.whenPluginAdded { plugin ->
    if ("com.android.build.gradle.AppPlugin".equals(plugin.class.name)) {
        project.android.dexOptions.preDexLibraries = false
    } else if 
("com.android.build.gradle.LibraryPlugin".equals(plugin.class.name)) {
        project.android.dexOptions.preDexLibraries = false
    }
}
}

buildscript {
repositories {
    mavenCentral()
}

dependencies {
    classpath 'com.jakewharton.hugo:hugo-plugin:1.2.1'
}
}

apply plugin: 'com.jakewharton.hugo'
也是我的另一个模块gradle

apply plugin: 'com.android.library'
apply plugin: 'com.jfrog.bintray'
apply plugin: 'com.github.dcendents.android-maven'

buildscript {
repositories {
    jcenter()
    jcenter()
    maven { url "https://maven.google.com" }
}
dependencies {
    classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7'
    classpath 'com.github.dcendents:android-maven-gradle-plugin:1.4.1'
}
}

group = 'com.sandrios.android'
version = '1.0.8'

ext {
PUBLISH_GROUP_ID = 'com.sandrios.android'
PUBLISH_ARTIFACT_ID = 'sandriosCamera'
PUBLISH_VERSION = '1.0.8'
PUBLISH_CODE = 9
}

android {
compileSdkVersion 26
buildToolsVersion "26.0.1"

defaultConfig {
    minSdkVersion 19
    targetSdkVersion 25
    versionCode PUBLISH_CODE
    versionName PUBLISH_VERSION
}

buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}
lintOptions {
    abortOnError false
}
}

task generateSourcesJar(type: Jar) {
from android.sourceSets.main.java.srcDirs
classifier 'sources'
}

task generateJavadocs(type: Javadoc) {
failOnError false
source = android.sourceSets.main.java.srcDirs
classpath += project.files(android.getBootClasspath()
        .join(File.pathSeparator))
}

task generateJavadocsJar(type: Jar) {
from generateJavadocs.destinationDir
classifier 'javadoc'
}

generateJavadocsJar.dependsOn generateJavadocs

artifacts {
archives generateSourcesJar
archives generateJavadocsJar
}

install {
repositories.mavenInstaller {
    pom.project {
        name PUBLISH_GROUP_ID
        description 'Simple integration of universal camera in android for easy image and video capture.'
        url 'https://github.com/sandrios/sandriosCamera'
        inceptionYear '2016'

        packaging 'aar'
        version PUBLISH_VERSION

        scm {
            connection 'https://github.com/sandrios/sandriosCamera.git'
            url 'https://github.com/sandrios/sandriosCamera'

        }
        developers {
            developer {
                name 'arpitgandhi9'
            }
        }
    }
}
}

bintray {
Properties properties = new Properties()

properties.load(project.rootProject.file('local.properties').newDataInputStream())
user = properties.getProperty('bintray.user')
key = properties.getProperty('bintray.apikey')
configurations = ['archives']
pkg {
    repo = 'android'
    name = 'sandriosCamera'
    userOrg = 'sandriosstudios'
    desc = 'Android solution to simplify work with different camera apis.'
    licenses = ['MIT']
    labels = ['android', 'camera', 'photo', 'video']
    websiteUrl = 'https://github.com/sandrios/sandriosCamera'
    issueTrackerUrl = 'https://github.com/sandrios/sandriosCamera/issues'
    vcsUrl = 'https://github.com/sandrios/sandriosCamera.git'
    version {
        name = PUBLISH_VERSION
        vcsTag = PUBLISH_VERSION
        desc = 'Minor fixes.'
        released = new Date()
    }
}
}

repositories {
jcenter()
}

dependencies {
implementation 'com.android.support:support-v4:26.0.0'
implementation 'com.android.support:appcompat-v7:26.0.0'
implementation 'com.android.support:recyclerview-v7:26.0.0'
implementation 'com.github.bumptech.glide:glide:3.6.1'
implementation 'com.yalantis:ucrop:2.2.0'
implementation 'gun0912.ted:tedpermission:1.0.2'
}
还有项目级的渐变

// Top-level build file where you can add configuration options common to 
all sub-projects/modules.

buildscript {
repositories {
    jcenter()
}
dependencies {
    classpath 'com.android.tools.build:gradle:3.0.0-beta2'

    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files
}
}

allprojects {
repositories {
    jcenter()
    maven {
        url "https://maven.google.com"
    }
}
}
请帮助我消除此错误

这是重要的一部分:

您需要将其添加到该模块的build.gradle中,而不是像应用程序模块那样添加

android {
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}
您还忘了为插件添加repo:

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

找到了我的答案,对我个人来说,它使用的是

implementation "com.google.guava:guava:23.0"
而不是

implementation "com.google.guava:guava:23.0-android"
我遇到了与您相同的错误(
SimException
)。我在android clean架构项目中有3个模块:

  • 数据(android库)
  • 域(普通java模块)
  • 演示文稿(应用程序-所有android内容)
解决方案

导航到
文件/项目结构…


确保您的模块具有相同的源和目标兼容性(本例中为1.8)

我遇到了相同的问题。我最近删除了我的
.gradle
缓存文件夹,并重新安装了Android Studio和SDK。最终,当尝试将问题对分时,问题消失了。我只能推测为什么会发生这种情况,但我怀疑下载较旧版本的构建工具和SDK,并使用这些较旧的工具构建(可能是缓存)我们的代码版本,导致它以一种不会引起问题的方式构建


这表明了新的(API 26?)构建工具在构建源代码时存在某种缺陷,因此,如果您发现这个问题而其他解决方案不起作用,我的建议是将您的目标SDK版本降低到25或更低,安装必要的构建工具,并尝试使用这些工具编译代码,在恢复到build tools 26或更高版本之前。

我在主项目中添加了一个带有编译选项Java 1.8的库。 固定添加:

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}

请发布您的gradle-wrapper.propertiesfile@IntelliJAmiya3.0仅alpha和beta版本,如我所知know@ShaifaliPundir我没有发布gradle-wrapper.properties,因为我非常确信它与Java 1.8无关,因为他的min SDK是19。我也有同样的问题。此外,我尝试过这样做,但错误仍然存在。我正在使用min SDK 15。Gradle Plugin 2.4+运行
desugar
获取代码,您可以在@TheHebrewHammer Android Plugin v3上检查
lambda支持
,它将采用Java 8代码并基于min SDK版本生成兼容的Dex。它确实支持Java8语言结构,但不支持像Java.time这样的新API。我使用的是3.0.0-beta2。它只在我切换到使用Java1.7的guava Android版本时才起作用。谢谢!在我的例子中,库使用JavaVersion.VERSION_1_8,但是使用库的项目在build.gradle中没有它。添加它立即解决了问题。IMHO:在Android应用程序中使用番石榴是一个糟糕的解决方案太胖了。它将强制使用multidex。如果您想使用Guava中的一个或两个类,请只提取这些类并将其放到应用程序中,这样做是有效的,但是您能解释一下吗@Hebrewhammer当然,留在Guava22(我认为)他们开始使用JDK1.8特性,这些特性直到API 24才可用(在Guava23中,有些语言特性直到26才可用,这就是为什么您会看到错误)。当他们这样做时,他们将库拆分为支持较旧的Android API。因此,guava android被锁定为JDk 1.7。当java库模块使用1.8时,即使kotlin模块也要求现在设置
sourceCompatibility
targetCompatibility
。谢谢你的提示。我在为Android编译Scala时遇到了一个类似的错误,这也解决了这个问题。对我来说,添加它可以解决这个问题