Android Studio 3.0 来了

2017年10月25号 Google 终于在经历大半年的打磨锤炼之后正式发布 Android Studio 3.0 版本,这个版本包含许多新的更新,其中三个主要特性包括:

  • 一套新的应用程序分析工具来快速诊断性能问题
  • 支持 Kotlin 编程语言和全新的工具和向导
  • 加速您在最新的 Android Oreo API 上的开发。

下载地址

官网下载*

国内镜像

Android Studio 中文社区

AndroidDevTools

以上版本均不含 SDK

更新内容

Kotlin Support

在 Android Studio 3.0 之前,使用 Kotlin 语言开发安卓应用,需要额外配置 Kotlin 插件。而新版本内置默认支持 Kotlin 语言,来减少我们在配置上的工作。 选择工具栏 Code -> Convert Java File To Kotlin File,或者使用快捷键的形式,你可以一键实现 Java 文件到 Kotlin 文件的转换。

Java 8 Support

Android Studio 3.0 对 Java 8 语言特性的默认支持使你不用 build.gradle 配置文件中添加 jackOptions 一项。如果你有使用到的话,记得删除:

android {
    ...
    defaultConfig {
        ...
        // Remove this block.
        jackOptions {
            enabled true
            ...
        }
    }
}

选择工具栏 File ——》Project Structure,修改 Source Compatibility 和 Target Compatibility 选项到 1.8 即可使我们的项目支持 Java 8 语言特性。

Layout Editor

布局编辑器中的组件树具有更好的拖放视图插入和新的错误面板了解更多

Fonts

如果您的Android应用程序的Android Oreo(API级别为26或更高),您现在可以使用 Android Studio 3.0 添加自定义字体和可下载的字体。

Android Things Support

Android Studio 3.0 在新建项目向导中包含一组新的模板,并为 Android Things 平台开发新模块向导。了解更多

Android Profiler

过去我们使用的 Android Monitor 工具从 3.0 版本开始被 Android Profiler 替代掉了。如图,run 按钮一栏多了一个 Android Profiler 按钮:

Android Profiler 提供有 CPU、Memory 和 Network 三大调试分析利器,实时跟踪 Apk 的运行状态,可以帮助我们可视化地做一些性能调优工作。

这三个工具在开发阶段非常实用,比如 CPU Profiler 能够分析应用中的线程使用情况,Memory Profiler 能够检测出内存泄漏,Network Profiler 能够拦截网络请求实现抓包功能等。这里列举一些使用图片,简单预览一下这三大工具的风采:

有关这几个工具的详细使用细节,可以参考官方的介绍:

Device File Explorer

新版开发工具带来的资源管理器允许我们访问连接设备的文件系统,实现 PC 端到手机或模拟器端的便捷文件传输。有了这个工具,从此就可以告别之前使用的「文件传输助手」等第三方工具啦。

Adaptive Icons wizard

选择 File -> New -> Image Asset,利用 Android Studio 提供的工具创建图片资源一直以来也是开发利器之一。现在,这个工具开始支持 vector drawables 格式,并且能够创建用于适配 Android 8.0 系统上各种形状的桌面图标。

URL intent-filter validator

AndroidManifest 清单文件开始支持一个特殊的标签,用于测试给定的 Url 字符串是否符合 intent-filter 标签内容所定义的规则。例如:

其他功能

Android模拟器快速启动

Android Studio 3.0 添加了一个新功能来解决这个叫做快速启动的问题,这个功能可以大大加快你的模拟器启动时间。启用后,第一次启动AVD时,将会发生冷启动(就像启动设备一样),但随后的所有启动都很快,系统恢复到关闭模拟器的状态(类似于唤醒设备)。如果您想尝试一下,请确保您处于 Canary 更新发布渠道,然后您会在SDK Manager中找到 Android Emulator 的 v26.2.0 版本。了解更多

APK分析器改进

Android Studio 3.0 更新了APK分析器,并增加了一些增强功能,以帮助您进一步优化APK的大小。了解更多

更多功能可以参考 Android Studio Release NotesAndroid Developers Blog*

适配旧项目

Android Studio 3.0 发布的同时,Android Plugin for Gradle 3.0.0 也同时发布。编译速度整体都得到了大幅提升。升级完 Android Studio 之后,旧的工程需要做出部分改变,才能通过 Gradle 的编译。

distributionUrl

Plugin 3.0.0+ 需要配置 Gradle 的最小版本是 4.1,我们可以通过 File -> Project Structure -> Project 的方式设置 Android Plugin 的版本,或者修改 gradle.properties 文件的内容,添加 distributionUrl 属性:

distributionUrl=https://services.gradle.org/distributions/gradle-4.1-all.zip

Google’s Maven repository

新版 Android Studio 工具默认使用 Google’s Maven Repository 用于下载依赖 Android Support Library,替代了 Android SDK Manager 的本地依赖方式。所以,需要在工程根目录下的 build.gradle 文件中添加 google() 一行代码:

allprojects {
    repositorie {
        google()
    }
}

buildToolsVersion

Android Plugin For Gradle 3.0.0 默认自动添加插件所需要用到的最小版本的编译工具。所以,我们不需要再手动在 build.gradle 添加一行 buildToolsVersion 属性的代码。对于旧的项目,可以去掉这行配置,比如:

android {
    compileSdkVersion 26
    // remote buildToolsVersion
    buildToolsVersion "25.0.2"
    ...
}

flavor dimensions

Plugin 3.0.0 开始,如果 build.gradle 自定义有 productFlavors 配置的话,需要添加定义 flavorDimensions(风味维度)。否则,编译报错:

error:All flavors must now belong to a named flavor dimension.
The flavor 'flavor_name' is not assigned to a flavor dimension.

flavorDimensions 的出现使得构建变种类型更加多样化:

可构建的变种数量 = 风味维度的数量 * 构建类型的数量

详细使用可参考 这里。对于旧项目,简单的话,可以随意定义一个风味维度,保证编译通过,如(这里的“minApi”可自由定义):

flavorDimensions "minApi"

productFlavors {
    beta {
      dimension "minApi"
      ...
    }

    production {
        dimension "minApi"
        ...
    }
}

each() 和 outputFile()

Plugin 3.0.0 版本移除了一些用于编译配置的 API,其中比较常见的就是 each() 和 outputFile(),两个常用于修改输出 Apk 文件名和路径的方法。 参考文章 Android Gradle 常用使用场景实现方式的总结,自定义输出 APK 文件名可以这样做:

android {
    android.applicationVariants.all { variant ->
        variant.outputs.each { output ->
            output.outputFile = new File(output.outputFile.parent, rootProject.getName()
                    + "-" + buildType.name
                    + "-" + releaseTime()
                    + "-v" + defaultConfig.versionName
                    + "-" + defaultConfig.versionCode
                    + ".apk");
        }
    }
}

写在后面

对于旧的工程,基本上便是这些配置上的适配修改。如果你还遇到了别的问题,别紧张,按照编译错误提示一步步操作,也能成功通过编译,不行还有谷哥*和度娘撑腰。总体来说,这次 Android Studio 3.0 和 Plugin For Gradle 3.0.0 的发布还是非常值得升级尝试的,并没有网上说的那么多坑。何况,我们作为写代码的程序员,本来不就是为了解决问题而来嘛。

以上内容转自 Android Studio 3.0 新功能解析和旧项目适配Android Developers Blog* 有删改