gpt4 book ai didi

java - 某些 Java 8 功能可在 Android SDK 23 中使用,而其他功能则不能?

转载 作者:搜寻专家 更新时间:2023-11-01 07:44:41 24 4
gpt4 key购买 nike

我在 Android 中使用最低 SDK 版本 24 构建了一个演示应用程序。完成后,我被告知我们只有带有 SDK 23 的测试设备(我使用自己的设备进行开发)并且我需要降级.为此,我将 app.gradle 中的 minSdkVersion 从 24 更改为 23。现在,我收到所有 forEach 出现的错误(正如预期的那样),但我仍然能够使用 lambda 表达式,即使它们也是一个Java 8 特性。据我所知,我没有在我的项目中添加任何类似 Retrolambda 的东西。

这是我的 app.gradle 文件:

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

android {
compileSdkVersion 26
buildToolsVersion "26.0.1"
defaultConfig {
applicationId "com.myfirm.rocketchatdemo"
minSdkVersion 23
targetSdkVersion 26
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

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

compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}

dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:26.1.0'
implementation 'com.android.support.constraint:constraint-layout:1.0.2'
implementation 'com.android.support:design:26.1.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation('com.android.support.test.espresso:espresso-core:3.0.1', {
exclude group: 'com.android.support', module: 'support-annotations'
})

// RocketChat SDK
compile('com.rocketchat.core:rocketchat-core:0.7.1') {
exclude group: 'org.json', module: 'json'
}
// https://mvnrepository.com/artifact/io.reactivex.rxjava2/rxandroid
// Reactive Java
compile group: 'io.reactivex.rxjava2', name: 'rxandroid', version: '2.0.1'
compile 'io.reactivex.rxjava2:rxjava:2.1.1'

// Chat Kit
// compile 'com.github.stfalcon:chatkit:0.2.2'

// ChatMessageView
compile 'com.github.bassaer:chatmessageview:1.3.5'

// Google Firebase
compile 'com.google.firebase:firebase-core:11.4.2' // this line must be included to integrate with Firebase
compile 'com.google.firebase:firebase-messaging:11.4.2'
}

这让我非常困惑,要么两者都有效,要么都无效!此外,我的应用程序不再正常运行,我认为可能是某些残留的 Java 8 代码造成了这种情况。我就是这样偶然发现的。

我是否可能错过了一些配置以将我的应用程序正确转换为 SDK 23?

最佳答案

根据Supported Java 8 Language Features and APIs文档 Lambda 表达式不需要特定的 minSdkVersion 版本。

这也适用于:

  • Lambda 表达式
  • 方法引用
  • 类型注释(仅编译时)
  • 默认和静态接口(interface)方法
  • 重复注释

关于java - 某些 Java 8 功能可在 Android SDK 23 中使用,而其他功能则不能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47184199/

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