2017年10月份Android Studio 3.0.0发布了最新版本,让我们看下他有那些新的功能。升级到此版本后踩的坑。

1.支持的语言

1.1.Java 8语言功能支持

现在可以使用某些Java 8语言功能并使用Java 8构建的库。不再需要 Jack。应该首先 禁用Jack 以使用内置的支持Java 8的默认工具链。

要更新项目以支持新的Java 8语言工具链,请将 Project Structure对话框中的 Source Compatibility 和 Target Compatibility 更新为1.8 (单击 File > Project Structure)。




androidstudio kt文件转java android kt工程转java工程_CPU Profiler


1.2 Kotlin支持

如Google I / O 2017所宣布,Kotlin编程语言现已在Android上正式受到支持。所以在这个版本中,Android Studio包含Kotlin语言支持Android开发。

通过将Java文件转换为Kotlin(点击 Code > Convert Java File to Kotlin File),或者使用新建项目向导创建一个新的启用Kotlin的项目,可以将Kotlin整合到项目中。



androidstudio kt文件转java android kt工程转java工程_CPU Profiler_02


2.自动化构建工具

使用Gradle 3.0.0的Android插件

Gradle的新Android插件 包括各种改进和新功能,但它主要提高了具有大量模块的项目的构建性能(估计对组件化项目比较友好)。当使用这个新插件用于大型项目时,您应该体验以下内容:

由于使用了新的延迟依赖性解决方案,使得 Gradle 拥有更快的构建配置时间;

只针对您正在构建的项目和变体 进行 Variant-aware 依赖解析;

对代码或资源应用简单的更改时,会拥有更快的增量构建时间;

注意:这些改进需要重大的改进,从而破坏了插件的一些行为、DSL和API。升级到 3.0.0 版本可能需要更 改您的构建文件和Gradle插件。

3.分析工具

新的Android Profiler 取代了Android监视器工具,并提供了一套新的工具来实时测量应用程序的CPU,内存和网络使用情况。您可以执行基于样本的方法跟踪来执行代码,捕获堆内存,查看内存分配以及检查网络传输文件的详细信息。

要打开,请单击 View > Tool Windows > Android Profile (或单击工具栏中的 Android Profiler )。

窗口顶部的事件时间轴显示触摸事件,按键和活动更改,因此您有更多的上下文可以了解时间轴中的其他性能事件。



androidstudio kt文件转java android kt工程转java工程_Android Profiler_03


3.1 CPU Profiler

CPU Profiler可帮助您通过触发示例或仪表化的CPU跟踪,来分析应用程序的CPU线程使用情况。然后,您可以使用各种数据视图和过滤器来解决CPU性能问题。



androidstudio kt文件转java android kt工程转java工程_Android Profiler_04


3.2 Memory Profiler

Memory Profiler 可以帮助您 识别 内存泄漏和内存流失 导致的卡顿、冻结甚至应用程序崩溃。它显示了应用程序内存使用的实时图形,可以捕获 a heap dump,强制垃圾收集和跟踪内存分配。



androidstudio kt文件转java android kt工程转java工程_CPU Profiler_05


3.3 Network Profiler

网络分析器允许您监视应用程序的网络活动,检查每个网络请求的有效负载,并链接到生成网络请求的代码。



androidstudio kt文件转java android kt工程转java工程_无buildToolsVersion_06


3.4 APK剖析和调试工具

Android Studio现在允许您对任何 APK 进行配置和调试,而无需将其从Android Studio项目中构建 - 只要构建APK 即可启用调试,并且您可以访问调试符号和源文件。

要开始使用,请从Android Studio Welcome屏幕中单击 Profile or debug APK。或者,如果您已经打开了项目,请从菜单栏中单击 File > Profile or debug APK。这将显示已解压缩的APK文件,但它不会反编译代码。因此,要正确添加断点和查看堆栈跟踪,您需要附加Java源文件和本机调试符号。



androidstudio kt文件转java android kt工程转java工程_Android Profiler_07



androidstudio kt文件转java android kt工程转java工程_Java 8_08


3.5 设备文件浏览器

新的设备文件资源管理器允许您检查连接的设备的文件系统,并在设备和计算机之间传输文件。这将替代DDMS中可用的文件系统工具。

要打开,请单击 View > Tool Windows > Device File Explorer。



androidstudio kt文件转java android kt工程转java工程_无buildToolsVersion_09


4.资源方面

4.1 自适应图标向导

Image Asset Studio现在支持绘制矢量图,并允许您为Android 8.0创建自适应启动器图标,同时为旧设备创建传统图标(“旧”图标)。

要开始,请右键单击项目中的res文件夹,然后单击 New > Image Asset。在 Asset Studio 窗口中,选择启动器图标(自适应和旧版)作为图标类型。

注意:您必须设置compileSdkVersion为26或更高才能使用自适应启动器图标。



androidstudio kt文件转java android kt工程转java工程_无buildToolsVersion_10


4.2 支持字体资源

为了支持Android 8.0中的新字体资源,Android Studio包含一个字体资源选择器,用于将 字体 绑定 到应用程序中或配置项目以下载设备上的字体(如果可用)。布局编辑器还可以预览布局中的字体。

要尝试下载字体,请确保您的设备或模拟器正在运行Google Play Services v11.2.63或更高版本



androidstudio kt文件转java android kt工程转java工程_Kotlin_11


4.3布局编辑器

在布局编辑器已经更新了一些增强功能,包括以下内容:

新的工具栏布局和图标。

在组件树中更新布局。

改进的拖拽 视图插入。

在编辑器下面显示新的错误面板,显示修复建议的所有问题(如果可用)。

使用 ConstraintLayout 构建的各种UI增强功能 ,包括以下内容:

新支持 创建 分界线(栅栏)。

新支持创建组:在工具栏中,选择 Guidelines > Add Group (需要ConstraintLayout 1.1.0 beta 2 或更高版本)

创建链接的新UI:选择多个视图,然后右键单击并选择 Chain。



androidstudio kt文件转java android kt工程转java工程_无buildToolsVersion_12


4.4布局检查器

该布局检查包括增强您的应用布局,以使其更容易调试问题,包括分组属性分为普通类和两个新的搜索功能,查看 View Tree 和 Properties 窗格。



androidstudio kt文件转java android kt工程转java工程_无buildToolsVersion_13


5.更新到android studio3.0.0坑

5.1 annotationProcessor

Warning:android-apt plugin is incompatible with future version of Android Gradle plugin. Please use ‘annotationProcessor' configuration instead.

把apt改成annotationProcessor

//apt ‘com.jakewharton:butterknife-compiler:8.5.1'

annotationProcessor ‘com.jakewharton:butterknife-compiler:8.5.1'

5.2 AAPT2

Error:com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details

Error:Execution failed for task ':app:processDebugResources'.

原因:现在使用的是APPT2为默认

关掉AAPT2即可,在Project/gradle.properties中添加 android.enableAapt2=false

5.3 gradle打包,自定义apk名称代码报错(Cannot set the value of read-only property 'outputFile' )

解决方案:修改文件名代码请这样写

android.applicationVariants.all {variant -> variant.outputs.all { outputFileName = "xinlebao_${defaultConfig.versionName}_${releaseTime()}.apk" } }

5.4 .gradle文件



androidstudio kt文件转java android kt工程转java工程_Java 8_14


们可以看到,谷歌buildToolsVersion构建工具的版本给“干掉了”,在以前的版本中,buildToolsVersion也会给项目的构建带来很多错,现在谷歌爸把它给“干掉了”;还有就是下面的依赖换成了implementation,那么它和compile有什么区别呢?

compile和api

api完全等同于compile,二者没有区别。我们大家都知道,随着Android版本的更新,有很多过时的类和方法,compile亦是如此,我们可以把compile理解成api的过去式。

api和implementation

这两个是AS3.0版本中新增的指令,下面用一张图来说明一啊两者的区别:



androidstudio kt文件转java android kt工程转java工程_Android Profiler_15


5.5 多渠道打包



androidstudio kt文件转java android kt工程转java工程_无buildToolsVersion_16


根据官网说法:

You must assign each product flavor you configure to one of the flavor dimensions.
 你必须指定一种 flavor dimensions void flavorDimensions(String... dimensions)
 修改如下:
 flavorDimensions "default"
 productFlavors {
 xiaomi {dimension "default"}
 }
 productFlavors.all {
 flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
 定义一个 flavorDimensions 然后在每个渠道中加入dimension
 5.6
Error:Execution failed for task ':youyoubao:javaPreCompileCommonDebug'.> Annotation processors must be explicitly declared now. The following dependencies on the compile classpath are found to contain annotation processor. Please add them to the annotationProcessor configuration. - butterknife-compiler-8.6.0.jar (com.jakewharton:butterknife-compiler:8.6.0) Alternatively, set android.defaultConfig.javaCompileOptions.annotationProcessorOptions.includeCompileClasspath = true to continue with previous behavior. Note that this option is deprecated and will be removed in the future. See https://developer.android.com/r/tools/annotation-processor-error-message.html for more details.