浅谈Android Studio3.0更新之路(遇坑必入)

序言:作为这个世界上走在最前沿的生物“猿”,怎么能对新事物一无所知呢,10月26日,随着Android 8.1 Oreo的预览版发布,Android Studio3.0正式版也发布了,作为Android开发的猿们我们应该早就知道谷歌在今年5月的开发者大会上就说了要支持Kotlin语言,所以这次更新一个比较大的点就在于支持Kotlin语言了,下面就跟着LZ的脚步来探索一下AS3.0吧

相信很多人很早就体验过谷歌爸爸放出来的体验版本了,虽然说正式版已经出了,但是很多人也不敢轻易贸然的更新,因为怕会掉进坑里出不来(真是一只胆小的猿,鉴定完毕)

安装

如果你从Android Studio内部点击更新的话,会跳转到Android的官网,没有梯子的同学可以去这个网站下载更新:

Android Studio3.0正式版安装过程中遇到的问题

1、Gradle Sync failed:

Gradle sync failed: Cause: com.android.build.gradle.api.BaseVariant.getOutputs()Ljava/util/List;
Consult IDE log for more details (Help | Show Log) (8s 123ms)

其实一开始不是这个错,最开始是一个redownload的一个错,后来LZ把2.3版本的给删了,缓存给清除了,然后就变成这个错了。既然有错,那就解决呗,顺手百度了一个,下面看看stackoverflow的解决方案

这个方法确实也适用于我,把ButterKnife降级之后就OK了。如果有其他更好的解决方法,欢迎私信我,有偿给发红包。“一个问题的解决是为了更好的迎接下一个问题的出现”——鲁迅

解决方案1:把项目中依赖的ButterKnife降级到8.4.0
解决方案2:把gradle plugin版本降低至2.3.3 重新编译下就可以了(这里感谢吊儿郎当小黑青年)

2、Unable to resolve dependency for:

第一眼看这个错的时候我以为我setting.gradle中没有依赖appCommon,看完之后明明确实依赖了,而且这是一个老项目,在AS2.3版本的时候很正常,然后我就知道这又是一个坑,无奈的又去上了一把Internet,然后试过网上说的在buildTypes中加入preview节点,然而并没有什么卵用,查了半天还是没有找到解决的方法,后来看着这段报错信息的时候,我看到了signingConfigs,我想到gradle中好像有这么个节点,抱着试一试的态度我删了那个节点,然后,卧槽卧槽卧槽,可以成功编译了,这是不是有一种躺着过坑的赶脚。如果有其他更好的解决方法,欢迎私信我,有偿给发红包

解决方案:把项目中的signingConfigs节点删除掉就好了,如果你担心多渠道打包的事情,那么就用打包工具吧。

以下是群里的朋友遇到的一些问题:

3、app:transformDexArchiveWithExterLibsDexMergeForDebug

解决方案:将电脑中的.gradle目录删除掉(清除掉gradle缓存)重新build。

参考stackoverflow

解决方案详解在这里

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

Error:(56, 0) Cannot set the value of read-only property 'outputFile' for ApkVariantOutputImpl_Decorated{apkData=Main{type=MAIN, fullName=debug, filters=[]}} of type com.android.build.gradle.internal.api.ApkVariantOutputImpl.
<a href="openFile:D:\eclipseCode\ipay-android\xinlebao\build.gradle" rel="external nofollow" >Open File</a>

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

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

解决方案:在gradle.properties中关闭APPT2 编译

5、AAPT2 编译报错 AAPT2 error

代码如下:

Error:java.util.concurrent.ExecutionException: com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details

解决方案:在gradle.properties中关闭APPT2 编译

android.enableAapt2=false

注:如果是eclipse转到as上的项目,可能没有gradle.properties文件,请在项目根目录中手动创建

6、apt插件问题(Error:Cannot choose between the following configurations of project :mylibrary:)

Error:Cannot choose between the following configurations of project :mylibrary:

- debugApiElements
- debugRuntimeElements
- releaseApiElements
- releaseRuntimeElements
All of them match the consumer attributes:

解决方案:如下

//1.在project的build.gradle中删除
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
//2.在module的build.gradle中删除
apply plugin: 'android-apt'
//3.将module的build.gradle文件中的dependency
apt 'com.jakewharton:butterknife-compiler:8.1.0'
//改为
annotationProcessor 'com.jakewharton:butterknife-compiler:8.1.0'

好了,以上就是最近更新3.0所遇到的一些问题。

Android Studio 3.0

1、.gradle文件

哇塞,问题解决之后就想着赶紧创建一个新的项目来看看有啥变化,首先一个变化比较大的是.gradle文件:

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

compile和api

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

api和implementation

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

图片参考

有想详细了解的同学,请参考官方的

2、支持Kotlin

还在初学Kotlin语言的同学有福了,AS3.0支持将Java代码直接转成Kotlin代码,下面我们通过一段VCR来认识一下这个功能:

在java文件中,选中你要转换的代码,然后在顶部选择Code——>Convert Java File to Kotlin File进行转换就好了,转换之后,这就是一个Kotlin文件了。

3、logcat栏

在AS上几个版本中,在Logcat还是Android Monitor的时候,里面有很多东西,网络啊,内存啊,CPU啊什么的,AS3.0中,谷歌将其分开了,Logcat就单独放出来了,之前那个看网络,内存,CPU的单独拎出来了,一个叫Android Profiler的东西:

是不是很帅,据说这玩意儿还自带抓包功能哦(这是LZ最喜欢的一个功能)。只不过默认是关闭的,我们要手动把它开起来。进入Run——>Edit Configurations,然后把下面这个钩上就好了:

需要注意的是,你项目中的API版本得是API26以下,而且你的手机版本得是Android5.0以上才能使用抓包功能。开启之后,我们来抓个包试试吧:

在手机上发起一次网络请求,NETWORK那一栏会发生明显的变化,我们选择那个区域进行抓包,可以看到请求了一个接口MainServlet(如果该区域下会请求多个接口,则会一一列出来),然后我们点击MainServlet,就会出现后台传过来的Json,Header之类的信息,怎么样,是不是很屌,以后再也不用再麻烦测试帮你抓包了,也不用再装什么其他软件了。CPU和MEMORY也一样,都具有记录当前页面的数据,你也可以根据它所记录的数据进行相应的分析。这两个就不展示了,有兴趣的同学可以更新之后自己玩玩。最后需要注意的是开启这个之后会降低应用程序的构建速度,因此只有在你要开始对应用程序进行概要分析时,再启用它。

4、文件管理器

AS3.0中,文件管理器工具允许和你的AS连接的手机无缝交互,你可以在AS3.0上查看,复制并删除设备上的文件。当检查由应用程序创建的文件或是要讲文件传输到设备时,非常有用:

data/data/app_name/
包含存储在内部存储上的应用程序的数据文件
sdcard/
包含存储在外部用户存储上的用户文件 (图片等)

5、支持Java8

同样,喜欢写lambda的同学也有福利了,这次AS的改版支持了Java8,可以直接将Java代码格式成lambda格式的,但是你得给你的项目设置成支持Java8,右键你的module,选择open Module Settings,进去之后按照如下设置就可以了:

这样你就能使用lambda表达式了,系统会自动提醒你哪里可以转换成lambda表达式,是不是好智能:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 详解升级Android Studio3.0时遇到的几个问题

    今天收到了Android Studio3.0更新推送,在升级过程中遇到几个问题,在这里把问题和解决方法记录下,方便要升级的童鞋.如果还有童鞋遇到不同的问题,也可以评论下我做下记录 1.gradle打包,自定义apk名称代码报错(Cannot set the value of read-only property 'outputFile' ) 报错 Error:(56, 0) Cannot set the value of read-only property 'outputFile' for

  • 详解Androidstudio3.0 关于Gradle报错的问题(小结)

    前言 升级Android Studio to 3.0 canary 1版本后,之前一个正常的Project,一直报错,报错内容如下 Error:Failed to complete Gradle execution. Cause: The version of Gradle you are using (3.3) does not support the forTasks() method on BuildActionExecuter. Support for this is available

  • 浅谈Android Studio 3.0 工具新特性的使用 Android Profiler 、Device File Explorer

    前言: 其实 studio3.0的工具大家也已经使用过一段时间了,自己呢,就是从bate版开始使用的,我觉得比较好用的几个地方.就几个,可能还没用到其他的精髓. 但我觉的这个两个功能对我是比较实用的.好那么下面就给大家介绍一下吧. 正文: 话不多说咱们直接上图吧.(个人比较喜欢看图说话) 第一个(Android Profiler)我要介绍的就是这个了.(先看一下效果"震撼一下") (图-1) (图-2) (图-3) (厉害不厉害,牛逼不牛逼)那么我们怎么来操作这个工具呢,来咱们接着看图

  • Android Studio3.0新特性及安装图文教程

    Android Studio是Android的官方IDE.它是专为Android而打造,可以加快您的开发速度,帮助您为每款Android设备构建最优应用. 它提供专为Android开发者量身定制的工具,其中包括丰富的代码编辑.调试.测试和性能分析工具. 一.Android Studio3.0新特性 (1).核心IDE更改 我们将基础IDE从IntelliJ 2016.2升级到2017.1.2,在2016.3和 2017.1中增加了许多新功能, 包括参数提示,语义突出显示,搜索中的即时结果等等.

  • 浅谈Android Studio3.0更新之路(遇坑必入)

    序言:作为这个世界上走在最前沿的生物"猿",怎么能对新事物一无所知呢,10月26日,随着Android 8.1 Oreo的预览版发布,Android Studio3.0正式版也发布了,作为Android开发的猿们我们应该早就知道谷歌在今年5月的开发者大会上就说了要支持Kotlin语言,所以这次更新一个比较大的点就在于支持Kotlin语言了,下面就跟着LZ的脚步来探索一下AS3.0吧 相信很多人很早就体验过谷歌爸爸放出来的体验版本了,虽然说正式版已经出了,但是很多人也不敢轻易贸然的更新,

  • 浅谈Android Studio3.6 更新功能

    前言 下载google CodeLab的程序时,提示要更新3.6版本才能运行程序,于是更新了一下,看看有什么新功能. 界面设计工具 这次更新了一些设计工具,比如Layout Editor 和 Resource Manager. 现在,在XML或设计工具的颜色选择器中,Android Studio会在您的应用程序中填充颜色资源,以便您快速选择和替换颜色资源值. 拆分视图并放大设计编辑器 设计编辑器(例如,布局编辑器和导航编辑器)现在提供一个拆分视图,使您可以同时查看UI的"设计"视图和&

  • 浅谈 Android 7.0 多窗口分屏模式的实现

    从 Android 7.0 开始,Google 推出了一个名为"多窗口模式"的新功能,也就是我们常说的"分屏模式".那么,这个功能有什么用呢?作为开发者,我们又能做些什么? Android 7.0 添加了对同时显示多个 APP 的支持.在手持设备上,两个 APP 可以在分屏模式下并排运行. 嗯,大概就是这样: 分屏模式的适配 我们如何才能让自己的 APP 支持分屏模式呢? 若项目的 targetSDKVersion 大于等于24,那么可以在 AndroidManif

  • 浅谈Android Studio 4.1 更新内容

    概览 Android Studio 4.1 目前已经发布,该版本共修复了2370 个 bug 以及 275 个 issue,主要包含如下新增功能: 设计 Material Design 组件库的更新 开发 Database Inspector 功能 直接在 Android Studio 中运行模拟器 Dagger 导航支持 使用 TensorFlow Lite 模型 构建与测试 Android 模拟器支持折叠屏 Apply Changes 更新 从 AAR 中导出 C/C++ 中的依赖 Nati

  • 浅谈Android Activity与Service的交互方式

    实现更新下载进度的功能 1. 通过广播交互 Server端将目前的下载进度,通过广播的方式发送出来,Client端注册此广播的监听器,当获取到该广播后,将广播中当前的下载进度解析出来并更新到界面上. 优缺点分析: 通过广播的方式实现Activity与Service的交互操作简单且容易实现,可以胜任简单级的应用.但缺点也十分明显,发送广播受到系统制约.系统会优先发送系统级广播,在某些特定的情况下,我们自定义的广播可能会延迟.同时在广播接收器中不能处理长耗时操作,否则系统会出现ANR即应用程序无响应

  • 浅谈Android为RecyclerView增加监听以及数据混乱的小坑

    为 RecyclerView增加监听 1.在实现好的MyAdapter中写内部接口: public void setOnItemLongClickListener(OnItemLongClickListener onItemLongClickListener) { this.onItemLongClickListener = onItemLongClickListener; } public void setOnItemClickListener(OnItemClickListener onIt

  • Android Studio3.0.1填坑笔记

    从前听大神同事强老师说IntelliJ IDEA 功能强大,是Jet Brains 公司开发商业IDE(集成开发环境),同时支持Java, Scala 和Groovy.商业IDE即IntelliJ 是一款收费的IDE,当然了其实也有免费的社区版本,但是很多功能都被阉割了.IntelliJ 除了支持Android项目开发,还可以搭建java web 开发环境,功能比AS更强大. 阿拉最近重装了电脑,想着干脆也装个IntelliJ 吧,但是另一个同事说Intellij与AS会冲突.一开始我觉得是他太

  • 浅谈React原生APP更新

    App更新流程 1.在 App 打开时请求接口或文件, 获取远程版本/版本更新说明/地址等等重用信息 2.通过库或者原生方案, 获取 App 的当前版本 3.比较远程版本和当前版本的区别(可以使用库,也可以自己写一个比较方案) 4.通过获取到的链接进行操作(可以跳转到对应网站下载,类似蒲公英这种,可以是 apk 链接, 通过安卓原生方法下载, 也可以是 App Store 链接) 大致的流程图 详细说明: 1.这些远程信息,可以是接口, 这样可以有一个中台来控制, 当然也可以是一个文件, 让运维

随机推荐