gpt4 book ai didi

android - 用 Android Studio 3.0 Java 8 内置功能替换 Retrolambda

转载 作者:可可西里 更新时间:2023-11-01 18:47:59 26 4
gpt4 key购买 nike

在我的项目中,我使用了流行的库 retrolambda。我刚刚下载了新的 Android Studio 3.0 Canary 1。

我已经更新了我的项目以使用新版本的 Gradle 等。一切正常。

Android Studio 3 中的新增功能内置了对某些 Java8 功能的支持。新 AS3 建议删除 retrolambda 并使用这些功能。

Retrolambda warning

我已经删除了 retrolambda,Gradle 构建成功但应用程序因此错误而崩溃(在有 lambda 的地方)

E/UncaughtException: java.lang.NoSuchMethodError: No static method lambda$replace$2

我在我的项目中使用 RxJava2。我不确定这与它有关,但在我的情况下,Java8 的内置功能似乎不起作用。也许我需要在“某处”设置一些东西?

我的项目设置enter image description here

我的 Gradle 文件

根项目

   dependencies {
classpath 'com.android.tools.build:gradle:3.0.0-alpha1'
classpath 'com.google.gms:google-services:3.0.0'
//classpath 'me.tatarka:gradle-retrolambda:3.6.1'
}

应用模块

buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.jakewharton.hugo:hugo-plugin:1.2.1'
classpath 'com.jakewharton:butterknife-gradle-plugin:8.5.1'
}
}

repositories {
mavenCentral()
maven { url "https://jitpack.io" }
}


apply plugin: 'com.android.application'
apply plugin: 'com.jakewharton.hugo'

...



compile 'com.android.support:multidex:1.0.1'
compile 'com.google.firebase:firebase-analytics:9.8.+'
compile 'com.google.firebase:firebase-crash:9.8.+'
compile 'com.google.android.gms:play-services-maps:9.8.+'
compile 'com.google.android.gms:play-services-analytics:9.8.+'
compile 'com.google.android.gms:play-services-auth:9.8.+'
compile 'com.github.PhilJay:MPAndroidChart:v3.0.1'
//Support Library

(...)

compile 'com.squareup.retrofit2:retrofit:2.2.0'
compile 'com.squareup.retrofit2:converter-gson:2.2.0'
compile 'com.google.maps.android:android-maps-utils:0.4'

/* RXJAVA2 */
compile 'io.reactivex.rxjava2:rxjava:2.0.6'
compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
compile 'com.squareup.retrofit2:adapter-rxjava2:2.2.0'
compile 'com.github.VictorAlbertos:ReactiveCache:1.1.0-2.x'
compile 'com.github.VictorAlbertos.Jolyglot:gson:0.0.3'


android {


compileSdkVersion 25
buildToolsVersion '25.0.2'
defaultConfig {
applicationId "my_app_id"
minSdkVersion 15
targetSdkVersion 25
multiDexEnabled true
vectorDrawables.useSupportLibrary = true
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}

(...)

dexOptions {
javaMaxHeapSize "4g"
}
lintOptions {
abortOnError false
}

}

buildTypes {
debug {
minifyEnabled false
shrinkResources false
}

debugpro {
minifyEnabled true
shrinkResources false
proguardFile file('proguard-project.txt')
proguardFile file('proguard-google-api-client.txt')
//noinspection GroovyAssignabilityCheck
signingConfig signingConfigs.debug
}

release {
minifyEnabled true
shrinkResources false
proguardFile file('proguard-project.txt')
proguardFile file('proguard-google-api-client.txt')



}
releaseci {
minifyEnabled true
shrinkResources false
proguardFile file('proguard-project.txt')
proguardFile file('proguard-google-api-client.txt')
//noinspection GroovyAssignabilityCheck
signingConfig signingConfigs.releaseci
}


(...)

compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}




}
apply plugin: 'com.google.gms.google-services'
apply plugin: 'com.jakewharton.butterknife'

最佳答案

这可能是由于在 https://issuetracker.google.com/issues/62456849 中跟踪的 Gradle Java 8 语言特性脱糖中的错误造成的

desugar 似乎盲目地重命名类文件中的合成方法,如果它们的名称以 lambda$ 开头(附加所有者类名称)regardless 字节码中是否已经存在对该方法的引用(并且该引用没有也被重命名)。

当代码路径在运行时遇到此类引用时,明显的结果是 NoSuchMethodError,因为具有该名称的方法已不存在。

关于android - 用 Android Studio 3.0 Java 8 内置功能替换 Retrolambda,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44068347/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com