我在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?
答案 0 :(得分:4)
根据Supported Java 8 Language Features and APIs文档,Lambda表达式不需要某个minSdkVersion版本。
这也适用于: