当前位置: 首页 > news >正文

Android只需两步,使你的Android Studio支持Lambda表达式

个人博客CoorChice,https://chenbingx.github.io/ ,最新文章将会首发CoorChice的博客,欢迎探索哦 !
同时,搜索微信公众号CoorChice,或扫描文章末尾二维码,可以关注我的微信公众号。同期文章也将会优先推送到微信公众号中,以提醒您有新鲜文章出炉。

Java8的一大新特性就是较为健全的Lambda表达式,但是目前Android studio并不支持这一特性。但是可以通过在gradle中配置几行代码,引用Github上的资源,就可以让你的Android Studio支持Lambda表达式了。

注意:使用Lambda之前,必需确保你的Java8是能够运行的。

下面直接上代码:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
buildToolsVersion "23.0.2"

//需要添加的第一部分:

//下面这两句在创建项目时不会自动生成,必需加上,是为了引用Java8的。
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}

    defaultConfig {
applicationId "*************"
minSdkVersion 21
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
    buildTypes {
        release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.1.1'
}

//需要添加的第二部分:

//以下全部都是要添加到项目的build.gradle中的。
//注意,经测试,只有3.2.4能够生效,如果有更新还请能够留言通知。
buildscript {
    repositories {
        mavenCentral()
    }

    dependencies {
        classpath 'me.tatarka:gradle-retrolambda:3.2.4'
}
}

repositories {
    mavenCentral()
}

apply plugin: 'me.tatarka.retrolambda'

只用添加标注的两部分即可,其余部分不用管。

来张效果图:


img_75971171f2a3fac8bdb715a62a63c3e9.jpe
Lambda表达式效果图

在代码中使用Lambda表达式可以使你的代码更加简洁清晰,提高效率和可读性。

Android Studio 2.1 之后开启Lambda

AndroidStudio2.1之后,Google引入了新的编译器Jack,将来可能是要替换掉现在的编译器的。它编译生成的文件类型与现有的Java编译器是不同的,但据说它能最大限度地缩小APK的体积,提高编译效率,并且64K这种蛋碎的问题也将不再存在了。

说了这么多其实只是想说,现在你只需要在 gradle中把它开启就行了:

defualtConfig{
    useJack(true)
}

下面这一段仍然是需要添加的,只有这样才能启用Java8

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}

温馨提示:目前Jack还不完善,实际开发过程中可能会遇到一些诡异的坑,这将导致你不得不把他关闭。

img_08b056b059ac831a2d371fa29bdef1e3.jpe
CoorChice的公众号

相关文章:

  • 【Android】Android开发实现进度条效果,SeekBar的简单使用。音量,音乐播放进度,视频播放进度等...
  • 移动webapp前端ui用哪个框架好
  • 理解 iOS 的内存管理
  • 绘制动画及动画循环练习
  • Sublime插件支持Sass编译和Babel解析ES6 .sublime-build文件初探
  • SCCM 2016 + SQL 2016 + Win 2012 R2 安装教程
  • lduan server 2012证书服务角色分离(十七)
  • C#/VB.NET 获取电脑属性(硬盘ID、硬盘容量、Cpu序列号、MAC地址、系统类型)
  • 系统时间不对 导至不能正常上网
  • select into 与 insert into select
  • [CentOs7]iptables防火墙安装与设置
  • viewPager + fragment
  • 从内核文件系统看文件读写过程【转】
  • Jupiter的安装和使用
  • 【趣解编程】条件语句if
  • 【Redis学习笔记】2018-06-28 redis命令源码学习1
  • 【跃迁之路】【477天】刻意练习系列236(2018.05.28)
  • Android 控件背景颜色处理
  • Android框架之Volley
  • css系列之关于字体的事
  • Promise面试题,控制异步流程
  • scrapy学习之路4(itemloder的使用)
  • SegmentFault 2015 Top Rank
  • Shadow DOM 内部构造及如何构建独立组件
  • 说说动画卡顿的解决方案
  • 详解移动APP与web APP的区别
  • 一些基于React、Vue、Node.js、MongoDB技术栈的实践项目
  • 自制字幕遮挡器
  • 7行Python代码的人脸识别
  • Spring第一个helloWorld
  • ​2020 年大前端技术趋势解读
  • #常见电池型号介绍 常见电池尺寸是多少【详解】
  • (6)设计一个TimeMap
  • (C)一些题4
  • (翻译)terry crowley: 写给程序员
  • (四)linux文件内容查看
  • (推荐)叮当——中文语音对话机器人
  • (五)Python 垃圾回收机制
  • (转)socket Aio demo
  • (转)拼包函数及网络封包的异常处理(含代码)
  • ... 是什么 ?... 有什么用处?
  • .cn根服务器被攻击之后
  • .Net Redis的秒杀Dome和异步执行
  • .net 写了一个支持重试、熔断和超时策略的 HttpClient 实例池
  • .NET/C# 阻止屏幕关闭,阻止系统进入睡眠状态
  • @value 静态变量_Python彻底搞懂:变量、对象、赋值、引用、拷贝
  • [ vulhub漏洞复现篇 ] JBOSS AS 4.x以下反序列化远程代码执行漏洞CVE-2017-7504
  • [].slice.call()将类数组转化为真正的数组
  • [Asp.net MVC]Asp.net MVC5系列——Razor语法
  • [BUUCTF NewStarCTF 2023 公开赛道] week3 crypto/pwn
  • [c#基础]值类型和引用类型的Equals,==的区别
  • [CF226E]Noble Knight's Path
  • [FFmpeg学习]从视频中获取图片
  • [Jenkins] Docker 安装Jenkins及迁移流程
  • [LeetCode]—Anagrams 回文构词法