《疯狂Android讲义》中写的代码有使用到lambda表达式,这是Java8才加入的,但是在编译的时候默认是不支持的。
使用Java8编译
一、Project的Gradle配置文件修改
首先在Android Studio 中打开Project的Gradle配置文件
在dependencies下加入下列代码
classpath 'me.tatarka:gradle-retrolambda:3.2.0'
最终形成
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.5.3'
classpath 'me.tatarka:gradle-retrolambda:3.2.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
google()
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
二、Module的Gradle配置文件修改
在Android Studio 中打开Project的Gradle配置文件
自己做的哪个Apk的编译需要用这个就选相对应的
现在顶端加入以下代码使用插件
apply plugin: 'me.tatarka.retrolambda'
然后在android下加入下列代码
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
最终形成
apply plugin: 'com.android.application'
apply plugin: 'me.tatarka.retrolambda'
android {
compileSdkVersion 29
buildToolsVersion "29.0.3"
defaultConfig {
applicationId "com.edcjyy.l2uiview"
minSdkVersion 14
targetSdkVersion 29
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
}
Finnish
可以测试一下代码中使用lambda表达式会不会出错了。
好像每新建一个Module都要设置一下,不知道有没有一劳永逸的方法。
总结
Project的配置文件中,在dependencies节点下加入
classpath 'me.tatarka:gradle-retrolambda:3.2.0'
Module的配置文件中,在头部引用
apply plugin: 'me.tatarka.retrolambda'
然后在android节点下加入
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}