Android Studio 3.0 正式发布了,这意味着我们的 Android 开发又要进入了一个新的阶段。这样很好,不过重大突破总是需要痛苦的迁移才能享受到,这也是意料之中的事情。
下面我主要提几个点,看看大家是否都注意到了。
1. IDE 升级和构建插件升级
虽然我们说升级的是 Android Studio,这货是个 IDE,不过请你务必注意,升级的还有 Android 的构建插件,也就是我们说的 gradle 插件了:
代码语言:javascript复制dependencies {
classpath 'com.android.tools.build:gradle:3.0.0'
}
升级的内容当中提到了很多 IDE 的新特性,比如内置 Kotlin 的支持(这个很好),设备文件浏览器,APK 分析器等等,注意这些都是 IDE 的新特性,这些特性很好,很值得一试。不过,当中还提到了构建速度的显著提升,这一点实际上主要是针对这个插件的,如果你只是想尝鲜用下 IDE 的新特性,那么不要升级 gradle 插件的版本,用之前的 2.2.3 或者其他版本,一样可以开发。
再说一次,如果只是要体验 IDE 的新特性,为了不折腾,先不要着急升级 gradle 插件。
为什么说这个?因为我看到群里面有小伙伴升级了之后说报了一堆错,没办法只好回去用 2.3 了。额。。我能说我一直都同一个工程 2.3 和 3.0 的 IDE 切来切去么?只要你不升级 gradle 插件,你原有的工程配置根本不会有什么毛病。
2. 构建插件的升级
就像前面说的,大家遇到了构建报错,其实主要是构建插件升级导致的,请再次注意这个插件是 gradle 插件。
No pain, No gain.
这次更新,对于构建依赖图的配置要求更新详细了,这样做的好处就是避免了很多无用的构建,也正是这样,可以想象对于一些巨无霸的项目,构建速度会有多么显著的提升。当然如果你得项目只有寥寥几个模块,这个功能也许并没有多么的有用。
具体 gradle 要怎么迁移,大家还是要看下官方文档,相比其他时候的更新说明,G 家的这份说明显得非常的良心实用:https://developer.android.com/studio/build/gradle-plugin-3-0-0-migration.html
简单来说,就是用了 productFlavor 的要迁移,所有配置的依赖也都需要更新为更为细致的编译期不透传依赖(implementation)和编译期透传依赖(api)以及编译期依赖(compileOnly)和运行时依赖(runtimeOnly)。
那么这次插件升级对于使用了自定义构建的工程可能影响会比较大,例如我们之前自定义过构建流程,甚至 hack 过 aapt,随着这次插件的升级,构建工具也有了较为显著的革新,那么惨了,我们这些工具在升级新版本之前都要做验证和同步更新,这将是一次痛苦的历程。
3. 支持 Kotlin
说实话,这个的意义在于官方对于 Kotlin 的态度,而非其他。这次更新对于 Kotlin 来说,从 IDE 的角度就只是帮我们安装了一下 Kotlin 插件而已,别的改动似乎并没有很大。
但这表明,Google 对 Kotlin 的支持并非停留在口头上,而是有实际行动的。嗯,别犹豫了,赶紧上车,去年没买上房子的教训还不够吗??
关于支持 Kotlin 这个问题,其实真正意义上的支持,应该把 Kotlin 的标准库内置于 Android 系统中,例如也许从 Android 10.0 开始我们用 Kotlin 开发 Android 就不用单独引入 kotlin-stdlibs 了。除此之外,我们也再也不需要在 gradle 当中配置这样的东西:
代码语言:javascript复制apply plugin: "kotlin-android"
使用 Kotlin 开发就像现在用 Java 开发那样自然,那才叫妙。不过现在的情形,Java 仍然是” First Language“,Kotlin 和 C 只能算是 ”First Class Language“。
要啥自行车?
不管怎样,这样其实对于 Kotlin 支持者们来说,已经是一个好消息了。
4. 小结
好啦,这次 Android Studio 的更新就说这么多吧,至于 Java 8 新特性的支持,不说也罢。