Android Studio 3.5新特性
Android Studio 3.5新特性
Android Studio 3.5新特性
在今天(美国时间8月20日)的早些时候,Android Studio(以下简称为AS) 3.5正式版终于发布了,从第一个bate版本发布到正式版本,历时三个半月。AS一直以来被开发者吐槽,因此谷歌也放慢了版本的变化,对测试版本进行大力度的优化,提高了稳定性。从3.3版本开始,谷歌启动了名为Project Marble的计划,意为谷歌团队致力于使集成开发环境(IDE)的基本功能和流程变得坚如磐石,同时精炼和完善面向用户的功能。而AS 3.5则是Project Marble主要成果的版本,下面来介绍主要成果。
Project Marble:系统健康
推荐的内存设置
如果AS检测到可以增加操作系统为AS进程分配的最大RAM(例如IDE,Gradle守护程序和Kotlin守护程序)来提高性能,那么AS将会弹窗提示,如下图(图片来自官方文档)
当然你也可以通过菜单打开配置,路径File > Settings(mac: Android Studio > Preferences),可以在Appearance & Behavior > System Settings中找到Memory Settings的配置选项。
内存使用报告
AS的内存问题有时难以重现和报告,为帮助解决此问题,在AS 3.5中可以通过菜单栏中的Help > Analyze Memory Usage来生成内存使用情况报告,点击之后会自动生成报告,提示重启AS。重启完毕后,会显示内存使用报告,你可以发送报告给AS团队,以分析使用问题。内存报告如下图
Windows:杀毒软件导致的IO问题
大部分开发者用的是Windows系统,而杀毒软件的文件扫描系统会实时扫描新文件。在AS构建项目时,Gradle会编译程序的资源和源代码,然后将编译后的资源打包在一起,在此过程中,会生成大量的文件,如果杀毒软件进行扫描会严重降低构建速度。所以可以关闭杀毒软件提升速度(不建议),或者把AS的一些目录添加到杀毒软件实时扫描的忽略目录。有这些目录
Gradle缓存目录:%USERPROFILE%(用户目录)\.gradle
Android SDK目录
Android项目目录
Android Studio目录
Project Marble:特色功能改进
Apply Changes
为了能不重启应用就使修改的代码和资源生效,以前推出了Instant Run,但是效果并不好,AS 3.5则推出了Apply Changes,与Instant Run重新编写APK的字节码技术不同,Apply Changes是通过利用Android 8.0(API级别26)或更高版本中支持的 Android JVMTI(https://docs.oracle.com/javase/8/docs/platform/jvmti/jvmti.html#bci)技术。所以如果想使用Apply Changes有两个条件:
- Apk必须是debug包
- 必须在Android 8.0以上的手机上运行
Apply Changes按钮在菜单栏上,在运行的右侧新增两个按钮,如下图(图片来自官方文档)
Apply Changes and Restart Activity:尝试通过重新启动活动但不重新启动应用程序来应用资源和代码更改。如果有代码和资源的修改可以使用这个来使代码和资源即时生效。
Apply Code Changes:尝试仅应用代码更改而不重新启动任何内容。如果只有代码修改,可以使用这个来使代码生效。如果修改了代码和资源,请使用“Apply Changes and Restart Activity ”。
当使用Apply Changes失败时,AS会提醒是否重新运行应用,如果不想AS进行提醒而在失败时直接重新运行应用,可以打开File > Settings(mac: Android Studio > Preferences),在Build, Execution, Deployment > Deployment中选择两个复选框即可。需要注意的是如果是修改了onCreate中的代码则必须重启应用修改才可生效。
应用部署流程
AS 3.5新增了一个下拉菜单,可以直接选择需要部署的机器。而且菜单中还包含一个选项,可以同时部署到多台设备。下拉菜单如下图
部署到多设备如下图
改进了Gradle同步和缓存检测
在以前的版本中,AS会定期清理下载的依赖项,可能会导致Sync失败,而AS 3.5版本改进了这个策略,更好地确定Gradle清理缓存的实际,减少同步失败的情况发生。
改进了构建错误输出日志
在新版本中,在build时为以下的构建过程提供了更好的错误报告,例如指向文件的链接和报告错误的行:
- AAPT编译和链接
- R8和ProGuard
- Dexing
- 资源合并
- XML文件解析
- Javac,Kotlinc和CMake编译
项目升级
改进了更新体验,提供了更多信息和操作,可以更好的更新IDE和Android Gradle插件。例如,如果出现错误,现在会有更详细的同步和构建错误日志。
现在可以独立的更新IDE而不影响其他的功能,例如Android Gradle插件可以在以后进行更新。
布局编辑器
AS 3.5对布局的可视化,管理和交互做了一些改进。
例如在使用ConstraintLayout布局时,属性面板里的约束显示了所有的约束关系,可以直接进行选择 。如下图(图片来自官方文档)
同时也可以选择一个约束,然后点击Delete键进行删除约束。也可以按下Ctrl(mac:command)键,然后点击一个约束进行删除。当按下Ctrl(Command)键时,鼠标悬停在约束上时,任何与之关联的约束都会变为红色,表示可以点击该约束进行删除。
选择视图后,可以通过单击属性面板的约束小组件部分中的任何+图标来创建约束,如下图(图片来自官方文档)。创建新约束时,布局编辑器现在突出显示约束,提供即时的可视反馈。
现在创建约束时,布局编辑器仅显示可以约束的合格锚点。而在以前的版本中,无论是否可以约束它们,布局编辑器会突出显示所有视图上的所有锚点。此外,在约束的目标会突出显示蓝色叠加层。如下图的对比
在AS 3.4中的表现
在AS 3.5中的表现
除上述更新外,AS 3.5还包含以下布局编辑器的改进:
- 该 Constraint Widget和margin下拉选项中会有dimens资源选项。
- 在布局编辑器的工具栏中,设备列表数据以及更新。此外,调整设备大小时的行为改进,现在调整设备大小的操作手柄始终可见。在调整大小时,会出现显示常见的各种设备的叠加层。
- 现在布局编辑器有新的配色方案(变浅了),提高了一致性并降低组件,文本和约束之间的对比度。
- 蓝图模式包括了对未显示文本的某些组件的文本支持。
Data Binding
此版本中,除了为数据绑定添加了增量处理支持之外,而且在XML中创建data binding表达式时改进了智能编辑器功能和性能。
在3.4版本中的效果
在3.5版本中的效果
改进了对C / C ++项目的支持
AS 3.5包含一些改进,对C / C ++项目更好的支持,对一些大型项目,大大提高了编译的速度。
对Build Variants面板改进
您现在可以在Build Variants面板中指定Active Build Variant和Active ABI 。这个功能简化了每个模块的构建配置,还提高了Gradle同步的性能。
并行的NDK版本
现在可以并排使用多个版本的NDK。这个功能在配置项目时提供了更大的灵活性: 例如,如果项目在同一台计算机上需要使用不同版本的NDK就会很方便。
如果使用了Android Gradle Plugin3.5.0或更高版本,还可以指定项目中每个模块应使用的NDK版本。可以使用这个功能创建可重现的构建,并减轻NDK版本与Android Gradle插件之间的不兼容性。
Chrome OS支持
AS现在正式支持Chrome OS设备,可以在下载页面下载相应的版本。
动态特性支持
AS 3.5 增强了对应用程序包特性的支持,为应用程序包添加了动态特性支持。开发者可以根据硬件特性(如OpenGL版本、对AR的支持)设置条件,或者根据API级别和用户国家地区设置条件。新建module时选择Dynamic Feature Module并点击Next就会出现如下图所示的选项,具体的详细配置可以参考https://developer.android.com/studio/projects/dynamic-delivery/conditional-delivery
IntelliJ IDEA 2019.1
AS 3.5的IDE已经更新了IntelliJ IDEA到2019.1的版本,关于IDEA2019.1版本的详细更新可以参考这个链接
Android Gradle plugin 3.5.0
随着AS 3.5的发布,Android Gradle plugin也更新到了3.5.0,关于plugin的更新内容可以参考这个链接
那么,现在升级到3.5.0吧,可以在AS内进行增量更新,也可以下载最新安装包重新安装。下载地址https://developer.android.com/studio#downloads
本文是转载文章,支持原创,博主原地址:https://blog.csdn.net/jklwan/article/details/99974869
Android Studio 3.5新特性的更多相关文章
- [译]Android Studio 3.6 新特性概览
设计 设计编辑器 设计编辑器(比如布局编辑器和导航编辑器)现在提供了一个拆分视图模式,能够同时查看 UI 界面的 Design 视图和 Code 视图.拆分视图取代并改进了早期的预览窗口,并且可以对每 ...
- Android Studio 3.0 新特性
最新Android Studio版本是Android Studio 3.0,本文提供了所有新功能和更改的摘要. 所有这些功能都可以在最新的金丝雀版本中发布,但beta测试版本可能尚未提供. 核心IDE ...
- 我最喜欢的visual studio 2013的新特性
博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:我最喜欢的visual studio 2013的新特性.
- Android Oreo 8.0 新特性实战 Autosizing TextView --自动缩放TextView
Android Oreo 8.0 新特性实战 Autosizing TextView --自动缩放TextView 8.0出来很久了,这个新特性已经用了很久了,但是一直没有亲自去试试.这几天新的需求来 ...
- [Android 新特性] 改进明显 Android 4.4系统新特性解析
Android 4.3发布半年之后,Android 4.4随着新一代Nexus5一起出现在了用户的面前,命名为从之前的Jelly Bean(果冻豆)换成了KitKat(奇巧).这个新系统究竟都有怎样的 ...
- Android Studio 2.2 新功能详解
Tamic /文 -译 http://blog.csdn.net/sk719887916/article/details/52672688 Android的Studio 2.2 已经可以在官网下载了. ...
- Android应用--新浪微博客户端新特性滚动视图和启动界面实现
新浪微博客户端新特性滚动视图和启动界面实现 2013年8月20日新浪微博客户端开发之启动界面实现 前言: 使用过新浪微博客户端的童鞋都清楚,客户端每一次升级之后第一次启动界面就会有新特性的介绍,用户通 ...
- Android开发使用Java8新特性
Android 支持所有 Java 7 语言功能,以及一部分 Java 8 语言功能(具体因平台版本而异).本文介绍您可以使用的新语言功能.如何正确配置项目以使用这些功能,以及您可能遇到的任何已知问题 ...
- Android Q 变更和新特性
安全和隐私变更 隐私保护是Android Q重要的主题之一,Android Q带来了一系列增强用户隐私保护的变更. 1 应用文件存储空间限制 应用访问限制是Android Q影响最大变更之一.在And ...
随机推荐
- JAVA工程师必学技能,进阶&涨薪的推进器!这份实战教程请收下
Netty 作为互联网中间件的基石,是 JAVA 工程师进阶为高级程序员必备的能力之一.也是目前是互联网中间件领域使用最广泛最核心的网络通信框架. Netty是一个高性能.异步事件驱动的NIO框架,它 ...
- FAILED: SemanticException Unable to determine if hdfs://tmaster:8020/user/root/words.db/test_t2 is encrypted
使用hive时,建立数据库,建表,写数据: 读数据:select * from test_t2; 报错SemanticException 原因:建表时使用了其他路径,或者在另一个路径的数据库(建立数 ...
- brew install thrift
➜ ~ brew install thriftUpdating Homebrew...Warning: You are using macOS 10.11.We (and Apple) do not ...
- php守护进程创建和简要分析
守护进程可 由系统启动脚本 /etc/rc.local crontab任务, 用户shell 方式运行 具体概念可参考c的 进程守护化基本步骤 1.创建子进程,终止父进程 (pcntl_fork,ex ...
- python打造批量关键词排名查询工具
自己做站点的时候,都看看收录和关键词排名什么的,所以打造的这个批量关键词查询工具. #encoding:utf-8 import urllib,re,random,time,sys,StringIO, ...
- JAVA系列:浅谈Java中的equals和==
在初学Java时,可能会经常碰到下面的代码: 1 String str1 = new String("hello"); 2 String str2 = new String(&qu ...
- 利用JS对象把值传到后台
记得以前刚写asp.net 从前台往后台传值 都是var data=A,B,C,D,E; 循环添加用逗号隔开 后台还要被测试测出只输入,就错了 哈哈..后来用✈◆类似的符号隔开 不是长久之计... 现 ...
- [Dart] Manipulate Lists/Arrays in Dart
We will learn how to work with Lists using a variety of methods made available in the dart:core libr ...
- HTML 005 段落
HTML 段落 HTML 可以将文档分割为若干段落. HTML 段落 段落是通过 <p> 标签定义的. 实例 <p>这是一个段落 </p> <p>这是另 ...
- xml介绍+xml创建+xml读取
1.xml介绍:(URL:https://blog.csdn.net/weixin_37861326/article/details/81082144) xml是用来传输内容的,是w3c推荐的 2.使 ...