多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# Android Studio 3.0 新功能 我们项目目前用的是2.3.3,已经有很长一段时间了。因为3.0刚出来的时候,网上踩坑的特别多,而我们又刚好在紧张的封闭开发状态中,所以没有去折腾。经过一段时间修BUG,3.0(实际上是3.1)已经趋于稳定,我们也要着手升级我们的IDE,来享受一下更加强大/现代化的功能。由于我们是直接从2.3.3升级到3.1-RC1,所以也不逐个版本介绍了,这里统称为3.0。 Android Studio 3.0 是一个重大的版本,包括了很多新功能和大的改动。其中有些是我们项目中可能不会用到的,譬如Android Things、Instant App等等,这些内容大家可以上官方网站或者官方博客进行查看,这个文档的目的是为了能**让大家快速了解并且上手与我们项目开发息息相关的内容**。 升级到3.0的过程没什么好说的,首先要升级某些使用了旧版本gradle插件方法的第三方gradle插件,譬如我们项目里面的butterknife和tinker; 注意一下`implementation`和`compile`的差别,然后该补引用的补,该改成`api`的就改,其他编译不通过的根据错误日志基本可以通过禁用D8编译器和aapt2来解决。只是新版本的报错信息位置跟2.3.3有点不一样,以前的gradle console窗口被整合到build窗口里面,通过侧边的按钮来切换。 ## 编译速度提升 这个是老生常谈了,每个版本都提到x%的提升,结果大家都有目共睹。但是3.0使用了全新的关键字`implementation`,可以减少一些不必要的编译,从而提升速度,经过一段时间测试,在日常开发中还是感觉得到的。具体不展开说明,可以查看官方说明。 ## Kotlin语言支持 终于!......千呼万唤始出来。自从Kotlin被宣布成为android开发的官方语言后,大家对Kotlin的兴趣就越来越大,都希望在项目中可以使用,现在,终于加进项目啦!相信各位对Kotlin的语法、特性等等都了解得差不多了,虽然目前我们没有强制使用Kotlin的计划,但大家也是可以开始尝试使用Kotlin了。 特别说明,在正式使用Kotlin前,先通过Kotlin官网的[一份语法测试](http://try.kotlinlang.org/koans)。 ## Java8部分特性支持 虽然Kotlin已经包含很多更加现代化的特性,但目前项目中的主力语言还是Java。在未来一段时间里面,我们大部分人还是用Java开发为主。所以能够使用上更加先进的特性,对我们编写更安全更简洁的代码有非常大的帮助。下面我们来看一下如何使用Java8的新特性。 首先,在项目中要使用到或者间接使用到(依赖库使用了)Java8特性的module的gradle配置文件中增加以下声明: android { ... // Configure only for each module that uses Java 8 // language features (either in its source code or // through dependencies). compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } } 支持的特性: * **lambda表达式** 简单来看,可以当作是单个方法的接口/抽象类的简洁实例化形式,但实际作用远不止此。关于lambda表达式的前世今生,有兴趣大家自己去搜索一下。在这里只作简单展示: button.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v){ ... } }); 以上是一个十分常见的监听器设置,看起来比较繁琐,通过使用lambda表达式,可以简化成以下形式: button.setOnClickListener(() -> { ... }); 其他语法在数据绑定的时候也提过一二,具体介绍请看[官方指南](https://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html#syntax) * **方法引用** 方法引用实际上是一种更加简洁更具可读性的lambda形式,同样数据绑定的时候已经提到过,通过`::`双冒号语法获得方法的引用,例如: button.setOnClickListener(presenter::onClick); 具体的介绍和语法请看[官方指南](https://docs.oracle.com/javase/tutorial/java/javaOO/methodreferences.html) * **类型注解** 在编写依赖库的时候比较能用得上,有兴趣的请看[官方指南](https://docs.oracle.com/javase/tutorial/java/annotations/type_annotations.html)和[示例](https://docs.oracle.com/javase/tutorial/java/annotations/basics.html) * **接口默认方法** * ...... ## 拖控件 …… ## 窗口变化 * **Layout Inspector** UI的debug神器,从Tools-Android-Layout Inspector搬到Tools-Layout Inspector,三级菜单变成二级菜单,但是之前在monitor侧边的小按钮入口也没了。功能也有所增强 * **Android Monitor拆分为Logcat和Profiler** * **gradle console窗口被整合到Build窗口中** 以前Event Log旁边,查看gradle当前任务进度和状态的控制窗口,现在被放到Build窗口中去了,而且还不是默认视图,需要点击Toggle view来切换出来。 Build的默认视图确实更加友好,只是有时候问题的原因没有很清晰的展现。 * **文件管理器** 现在可以在Android Studio上直接查看连接设备的文件系统,一个曾经消失了几个版本的功能,现在以一个全新的面貌回归 * **......** 大家去发掘 ## Android Profiler Android Studio 3.0使用Android Profiler替换了Android Monitor。 相比旧版本性能分析器,Android Profiler增加了直观的事件显示,包括页面打开,触摸、按压事件等等行为,更加友好的让我们看到App当前的状态和性能问题发生时的场景。更多请查看[官方文档](https://developer.android.com/studio/preview/features/android-profiler.html)