版权声明:本文为原博主收集的资料,欢迎参考。未经本人允许,禁止转载。 原博文地址:https://blog.csdn.net/z302766296/article/details/89468726

每次到AndroidStudio新版本发布的时候,都忍不住想更新一波,例如现在的AndroidStu dio3.4

不过说真的,以前在AS2.0的时代,我是很怕更新的,因为那个时候更新AS往往需要你更新gradle版本,但是gradle版本一更新,旧项目就开始不适应了,一堆gradle的坑,特别是引入了dagger2之后,更要死的感觉。

多说一句,升级AS问题不大,但是你要想跟随AS升级,把Gradle也升级一波,那我还是劝你先三思而后行。

直到了3.0之后,我才感觉AS这个IDE才开始稳步发展了。

那说下这次3.4都更新了啥。
 1. Project Structure Dialog
 2. ResourceManager
 3. Plugin面板 
 4. R8

Project Structure Dialog(PSD)

其实就是我们平时对项目主程,按下F4的时候,显示的那个dialog。发现里面确实是多了几个功能。如图

发现呢,UI的话还是有点变化的。主要是看看功能变化,上面的Project、SDK Location都可以跳过了,可以看到第三个,新增的Variables。

Variables

可以理解成,模块的gradle变量依赖。在UI上面,可以看到整个App的模块目录,然后在目录下面又有不同的dependencies。

(因为涉及到项目名,所以打码了)

先说下这个dependencies是什么呢?为什么有的项目会有dependencies呢?

一般的话,在开发过程中,特别是涉及到模块化开发的时候,为了保证全部模块都使用同一个依赖库的管理,这里一般有两种方法:

1.设置一个叫dependencies.gradle文件,里面主要是设置一些常用第三方库的依赖。

2.直接在主程的build.gradle下创建一个dependencies的节点。

先说方法一,就拿我以前负责搭建的一个项目为例。

然后在项目主程的build.gradle添加依赖

然后在子模块使用

大概就这样吧,一个依赖管理器,然后在主程项目添加引用,再到子模块使用。

方法二:

直接在主程下面的allprojects节点下,添加ext和dependencies节点

两者的方式都是一致的,为了做一个gradle的依赖管理。但是发现只有方案2的会显示在variables上,后面查了下官方的文档,他们的做法也是方案二的做法。

所以呢variables上面主要是一些定义在gradle中的变量。

再看到下面的Modules面板,和之前的功能大致一样,但是多了些提示的功能,UI上面也更加友好。但是和之前的相差不是很大。简单略过下

dependencies面板

在3.4版本,dependencies是单独拿了出来,还扩展了不少功能,最关键的一个莫过于是

依赖库的查找了 我们以前添加第三方库的依赖,一般是maven找,或者GitHub找对应的库。但是现在AS提供一个搜索依赖库的功能

dependencies面板的说明大概如上了,列出了当前模块依赖的第三方模块、右侧的就是不同构建版本下的依赖信息,可以详细看到依赖包的类。点击的一个dependencies的时候还有具体的提示,如图

依赖库的查找

通过dependencies里面的+小箭头,再选中library dependency就可以调到搜索页面了,可以搜Maven,JCenter等远程的仓库,也可以搜索本地的,大大减少了添加依赖时找包的问题- -。

但是也有一个需要注意的地方,看到这段注释,查找的第三方库都是根据我们projects项目的build.gradle中的repositories中配置的仓库控制。例如jcenter,Maven那些。

所以为了加快搜索速度,一般在projects下的build.gradle中的repositories添加如下配置

  1. buildscript {
  2. repositories {
  3. // 添加如下仓库。
  4. jcenter()
  5. google()
  6. mavenCentral()
  7. maven { url "https://jitpack.io" }
  8. maven { url "https://mvnrepository.com" }
  9. // 阿里云镜像
  10. maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
  11. }
  12. dependencies {
  13. classpath 'com.android.tools.build:gradle:3.4.0'
  14. // NOTE: Do not place your application dependencies here; they belong
  15. // in the individual module build.gradle files
  16. }
  17. }
  18. allprojects {
  19. repositories {
  20. google()
  21. jcenter()
  22. }
  23. }
  24. task clean(type: Delete) {
  25. delete rootProject.buildDir
  26. }

例如添加个OKHttp看看

注意,这里面搜索出来的可能比较多。这就需要取我们常用的,squareup下面的OKHttp3了,然后右侧有一个版本可以选择。点击OK之后,依赖只是添加到了清单文件,但是当我们构建gradle的时候就生效了。

再次点击这里的ok,就开始构建gradle了。

ps:有时候搜索的时候会提示noting to show...那就得看看project->build.gradle中是否配置了上述所说的那些仓库依赖了,有的情况下,添加了仓库依赖之后,也未必能找到。那就多试几次查找就好了。

buildVariants面板

buildVariants,感觉这个功能没啥用,因为buildVariants需要配置的远比面板提供的信息要多

Suggestions面板:

对当前项目模块构建的信息做一个提示建议,例如依赖的升级

以上就是PSD的东西了,但是3.4更新的ResourceManager也是厉害。直接上图

ResourceManager

默认会在左边的侧边栏找到,或者通过View->Tools Window->Resource Manager找到

打开ResourceManager 面板是这样的

感觉ResourceManager真的加快了开发的效率,尤其是在做APK优化,接手项目,查询layout的时候,简直是质的提升。

而且通过filter中勾选library查看第三方依赖的一些layout啊信息等,就可以针对性做优化了。

Plugin面板

面板的更新,也改变得比较直观,都是照顾程序员啊,眼睛不好使,所以文字描述啊,分类那些字体都放得大大的。

关键一个好的地方,搜索和结果是放在一起了。以前的版本,每次都要点下下面的browser...这边直接搜一下就ok了。

然后更新的面板也单独抽取出来,比较直观和容易地管理插件

R8

什么是R8?看到官网文档,R8是在3.3 beta的时候发布的一个功能,而3.4直接用R8的方式构建项目。

简单来说R8主要是针对proguard做的一系列的优化,将编译中的一部分任务集成在一起,提高了编译效率

未开启R8之前的编译任务如图

R8构建项目

R8效率对比,图来自官网

默认可以在gradle.properties中关闭R8

  1. # Disables R8 for Android Library modules only.
  2. android.enableR8.libraries = false
  3. # Disables R8 for all modules.
  4. android.enableR8 = false

再说下,在3.4遇到的功能,可能是之前3.3就有的功能,现在才发现

XML文件中的颜色提示器

XML层级提示器

最后上一个图,很久之前的ICON构造工具了,也是AS自带的= =。坤哥律师函警告

啦啦啦啦~~~6.10更新了 dependencies与project-build.gradle关系说明

AndroidStudio 3.4更新了啥?(转载)相关推荐

  1. AndroidStudio下载--持续更新-支持多种网盘--多版本

    前言 因为android-studio下载困难问题,特意整理到网盘,方便大家下载,以后也会持续更新版本.但是官网的最新稳定版永远在最上面获取. 支持多版本,WIndows和MAC系统,持续维护!!! ...

  2. CVPR 2019 论文汇总(按方向划分,0409 更新中)[转载]

    转载链接:http://bbs.cvmart.net/topics/302/cvpr2019paper 作为计算机视觉领域三大顶会之一,CVPR2019(2019.6.16-6.19在美国洛杉矶举办) ...

  3. mysql截取字符串并更新_【转载,留作参考】mysql 截取字符串以及mysql update select...

    因为想要把表中的一个字段的一部分取出来,另放一个新的字段里面,所以想到了mysql的字符串截取功能. 实例如下: select params, substring_index(params, '=', ...

  4. adb 更新 android sdk,[转载]安装Android时SDK AVD MANAGER时更新报错的解决办法

    最近安装Android SDK时,发现更新时出现"A folder failed to be renamed or moved."等类似错误.经过测试和G后发现解决办法目前有两种情 ...

  5. AndroidStudio子线程更新UI的几种方式

    在安卓开发中,大部分情况下是不能在子线程直接更新UI的,只能在UI线程更新UI,其根本原因在于加入在一个Activity中有多个线程去更新UI,且没有加锁机制,可能会产生界面混乱的情况,但是如果都加锁 ...

  6. 图像处理方面期刊和计算机视觉领域期刊(更新中) -转载

    参考网上的资料,作个备注,抓到篮子里都是菜,见到一个收录一个,不断更新中 一.国际会议 会议名称 会议介绍 ICCV: IEEE International Conference on Compute ...

  7. inux常用命令-持续更新中(转载:小牛导航,super-nb)

    关机 (系统的关机.重启以及登出 ) shutdown -h now 关闭系统 init 0 reboot 重启 logout 注销 分享下我的网站,小牛导航,super-nb.com 文件和目录 c ...

  8. android studio 一直refreshing,AndroidStudio更新新版本后,项目一直处于Refreshing 'xxx' Gradle Project状态...

    我们使用的AndroidStudio经常需要更新版本,但是有时候经常更新的很慢,一直在Refreshing 'xxx' Gradle Project转啊转的,实在是让人捉急啊:有时候还会更新出问题(比 ...

  9. 【转载】浏览器事件循环机制(event loop)

    首先,本文转自https://juejin.im/post/5afbc62151882542af04112d 当我看完菲利普·罗伯茨的 javascript event loop的演讲的时候,就对于事 ...

最新文章

  1. 【ACM】二叉搜索树(Binary Search Tree /BS Tree) 小结
  2. Go 语言运行时环境变量快速导览
  3. 将devexpress中控件添加到vs工具箱中
  4. PTA7、 转换函数使用 (10 分)
  5. 【原理】解析一致性哈希算法
  6. SAP License:IMG子菜单
  7. php连接mysql代码+类_php连接mysql操作类
  8. mysql执行计划(explain)
  9. Arduino+SIM800C实现电话通讯
  10. 深入安卓Package Manager|Package Installer
  11. 100个穷二代,每人100元,60岁前谁能翻盘?
  12. 肯德尔系数怎么分析_如何通过修改数据提高肯德尔系数?
  13. django如何连接Mysql中已有的数据库
  14. DBF文件使用JAVA读写解决方案
  15. cad剖切线的快捷键_Auto CAD2016剖面线快捷键是什么呢??
  16. 《信贷的逻辑与常识》笔记
  17. payjs 源码_WordPress插件:Payjs For Ponits基于Payjs开发的积分充值微信支付插件
  18. 微软75亿美元收购ZeniMax及其旗下工作室;KPS同意21亿美元收购Garrett全部资产 | 美通企业日报...
  19. 用Python爬取网易云热门评论(亲测有效)
  20. msp430单片机的复位

热门文章

  1. iis无法读取配置文件_SpringBoot 有很多读取配置文件的方法,你知道几个? 静态方法读取呢?...
  2. html 仿ios选择控件,仿ios垂直滚动选择
  3. python写名片管理系统_Python实现名片管理系统
  4. 写了一篇关于 NLP 综述的综述!
  5. MoCoV3:何恺明团队新作!解决Transformer自监督训练不稳定问题!
  6. 前端渲染引擎doT.js解析
  7. 消息中间件系列(八):Kafka、RocketMQ、RabbitMQ等的优劣势比较
  8. 史上最全memcached面试26题和答案
  9. 征稿 | “健康知识图谱”投稿通道开启
  10. 论文浅尝 | 基于置信度的知识图谱表示学习框架