Android Studio 3.0.0更新和踩坑

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)。


java8

1.2 Kotlin支持

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

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


kotlin

2.自动化构建工具

使用Gradle 3.0.0的Android插件

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

  1. 由于使用了新的延迟依赖性解决方案,使得 Gradle 拥有更快的构建配置时间;
  2. 只针对您正在构建的项目和变体 进行 Variant-aware 依赖解析;
  3. 对代码或资源应用简单的更改时,会拥有更快的增量构建时间;
  4. 注意:这些改进需要重大的改进,从而破坏了插件的一些行为、DSL和API。升级到 3.0.0 版本可能需要更 改您的构建文件和Gradle插件。

3.分析工具

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

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

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


分析工具

3.1 CPU Profiler

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

CPU profiler

3.2 Memory Profiler

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


Memory Profiler

3.3 Network Profiler

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

Network Profiler

3.4 APK剖析和调试工具

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

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

APK分析
APK包分析

3.5 设备文件浏览器

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

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

设备文件

4.资源方面

4.1 自适应图标向导

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

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

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

自适应图标

4.2 支持字体资源

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

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

支持字体资源

4.3布局编辑器

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

  • 新的工具栏布局和图标。
  • 在组件树中更新布局。
  • 改进的拖拽 视图插入。
  • 在编辑器下面显示新的错误面板,显示修复建议的所有问题(如果可用)。
  • 使用 ConstraintLayout 构建的各种UI增强功能 ,包括以下内容:
  1. 新支持 创建 分界线(栅栏)。
  2. 新支持创建组:在工具栏中,选择 Guidelines > Add Group (需要ConstraintLayout 1.1.0 beta 2 或更高版本)
  3. 创建链接的新UI:选择多个视图,然后右键单击并选择 Chain。


    布局编辑器

4.4布局检查器

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


image

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文件

gradle

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

compile和api

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

api和implementation

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


image

5.5 多渠道打包

多渠道

根据官网说法:

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,457评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,837评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,696评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,183评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,057评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,105评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,520评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,211评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,482评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,574评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,353评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,897评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,489评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,683评论 2 335

推荐阅读更多精彩内容