Android Studio3.1.0升级问题记录

每次升级Android Studio时,一般情况下Gradle版本的也会相应的升级,我之前Android Studio 3.0.1、Gradle 是4.1升级后为:Android Studio 3.1.0、Gradle 为4.4。

升级完成后先是报一堆错(每次都升级都是-。-)

第一个错如下:

The SourceSet ‘instrumentTest‘ is not recognized by the Android Gradle Plugin. Perhaps you misspelled something?

翻译过来就是:

“SourceSet” 的‘instrumentTest‘ 没有被Android Gradle插件识别。也许你拼错吗?

猜想可能Gradle移除了‘instrumentTest‘关键字,网上搜了一下,博客地址如下:http://www.it1352.com/139247.html

新版本Gradle对其做了重命名

即:

 旧版本 - > 新版本

instrumentTestCompile - > androidTestCompile 

instrumentTest  - > androidTest 

然后查看了自己所有module的Gradle,发现有一个地方用到了 instrumentTest ,将其改为 androidTest ,然后继续同步Gradle,然后编译,这个错误不报了。

第二个错误如下:

Configuration ‘compile‘ is obsolete and has been replaced with ‘implementation‘.It will be removed at the end of 2018

翻译过来就是:

配置“编译”已经过时,取而代之的是“实现”。它将在2018年底被移除。

我们知道,在Android Studio3.0开始的时候就将 compile 改为 implementation 关键字了,当时,项目中大部分的compile改为了implementation,但是还有一部分没有改过来,但是仍然可以使用,但是现在呢?尼玛直接给编译就报错!这不是强制性的让使用 implementation 么?报的错中提示2018年底才移除,这还没到年底呢,就不能用了?

还是乖乖的改吧,由于是我们的依赖的library中使用了compile,相当于是library依赖了一个第三方库,直接改为implementation就相当于屏蔽掉了app对library依赖的第三方库api的访问权限,而我们的app刚好用到了library依赖的第三方库的api,所以直接改为implementation是不行的,要想让app能访问到就将其改为 api就可以了,其实这不是一个好的解决办法,最好的解决办法是,library中封装一层app访问library依赖的第三方库api的方法,这样的话app是和library依赖的第三方库是没有任何关系的,这样就降低了app与library依赖的第三方库的耦合性,这样也体现了“第三方库隔离”的原则,如果以后依赖的库变了,你只需要修改library中依赖的库及app调用的方法即可,不用动app里面的代码了~

第三个错误如下

Duplicate zip entry [com/c/a/a/a/a.class == 69.jar:com/ta/utdid2/b/a/a.class]

翻译过来如下:

重复的类,即类所在的包名和类名都相等

一般情况下不会写包名和类名相同的类,我猜测一定是Jar包重了,仔细找了一下,发现两个library中都使用了
阿里的httpdns的jar包,只不过是Jar包的版本不一样,旧版本中其中一个library中使用了 provided 编译,所以没有报冲突,现在新版本推荐使用 compileOnly 关键字,替换为compileOnly关键字后还是报一样的错,哎呦!这就纳闷了,compileOnly的意思不就是编译时依赖,不打紧包中的意思吗?怎么还冲突?仔细查找了一下,发现其中一个library中多了一个混淆规则的jar包(utdid4all-1.1.5.3_proguard.jar),而另外一个没有,但是旧版本是没有问题的,我猜测可能是编译混淆后发现两个类是一样的所以就报错了…

解决办法一:

两个library中都添加 utdid4all-1.1.5.3_proguard.jar 使用 compileOnly 关键字编译;

解决办法二:

两个library中都不添加 utdid4all-1.1.5.3_proguard.jar

解决办法三:

在app中添加一个 utdid4all-1.1.5.3_proguard.jar 进行编译即可;

至此,以上几个错误都解决完了~

总结

我们应该理解implementation、api、compileOnly等几个关键字的区别,具体见下图:

这里写图片描述

最后附上几个参考链接:

https://docs.gradle.org/current/userguide/java_library_plugin.html#sec:java_library_configurations_graph

https://stackoverflow.com/questions/44413952/gradle-implementation-vs-api-configuration

原文地址:https://www.cnblogs.com/angel88/p/8715809.html

时间: 2024-08-29 04:17:24

Android Studio3.1.0升级问题记录的相关文章

MetroUICSS 2.0到3.0升级细节记录

Metro UI CSS 是一套用来创建类似于Windows 8 Metro UI风格网站的样式 其官网地址:http://metroui.org.ua/ 中文地址:http://www.bootcss.com/p/metro-ui-css/ 源码地址: https://github.com/olton/Metro-UI-CSS 这种前端框架没有Bootstrap.YUI流行,网上资料也不多.现在项目中用的这框架要从2.0升级到3.0,我在这里记录下各种细节. js包的替换,url的替换 but

关于升级到Android Studio3.2版本的注意事项

关于升级到Android Studio3.2版本的注意事项: 1.默认最低的Build Tools version 为 28.0.22.如果程序中使用了kotlin插件,需要将kotlin插件的最低版本号改为1.2.513.如果在gradle.properties文件中加入了android.overridePathCheck=true 设置,现在是不支持的要删除或注释掉 编译器给出的提示原文:1.The specified Android SDK Build Tools version (27.

< Kotlin > Android Studio3.0 Kotlin工程问题集

"-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> < Kotlin > Android Studio3.0 Kotlin工程问题集 - onlyloveyd - 博客频道 - CSDN.NET onlyloveyd Cherish Android and Keep Going 目录视图 摘要视图 订阅 [活动]2

Android Studio3.0 引用Module的本质和共享Module给其他Module

如何在Module中去引用另外一个Module? 方法一: Google提供的自身的依赖,compile引入需要用到Module. 方法二: 每个Module最终都会被编译成一个对应的后缀为aar的文件<..\moduleName\build\outputs\aar\XXX.aar>,在需要用到的Module中直接引用此文件.这里aar文件的引入方式对比直接引用Module稍不同,如下: 第一步: 需要先在宿主Module中的build.gradle下的android{}下添加如下代码: re

Android Studio 3.0 下载 使用新功能介绍

谷歌2017发布会更新了挺多内容的,而且也发布了AndroidStudio3.0预览版,一些功能先睹为快.(英语一般,有些翻译不太好) 下载地址 https://developer.android.google.cn/studio/archive.html 选择显示全部即可看到下载地址,这里给出来了. Windows (64-bit): android-studio-ide-171.4010489-windows.zip (702075896 bytes) https://dl.google.c

关于cocos2dx 3.0升级崩溃报错(unable to load native library) 和(Fatal signal 11 (SIGSEGV) at 0x00000000)

最近一直在Windows平台开发cocos-2dx游戏,期间做了一次引擎升级,升级到了3.0正式版本.Windows平台上表现很正常,没有出现什么问题. 上周五准备发布一个安卓包,编译很轻松的就过了,没有花费多少时间,但是安装到手机后,发现运行就崩溃了.没办法只好用模拟机调试,再次吐槽Android的模拟器,真的太他妈慢了,不到万不得已我真的不想再去用它,google真的应该好好整一下了. 好不容易运行起来了,看到崩溃的时候logcat的报错是"unable to load native lib

Android studio下增量升级功能的NDK开发

最近研究Android应用的增量升级功能,期间涉及到了NDK开发的内容,整理记录在此. 先说几个问题. 一.NDK开发就是JNI开发啊,卧槽我原来都不知道啊,一直以为是两个东西啊...... 二.关于开发环境,老的Eclipse版本要安装的工具比较多,什么NDK啊,cygwin啊什么,AS(Android studio首字母,以下皆以AS代替)就简单多了,直接装一个NDK就可以了.貌似AS从1.3版本就可以不装cygwin了,而我装的是2.0版本的,更不需要装.而且神奇的是,我安装NDK的时候没

Windows 7旗舰版搭建andriod 4.0开发环境记录

搭建Android环境步骤(仅供参考): 官方搭建步骤: http://developer.android.com/index.html 搭建环境之前需要下载下面几个文件包: 一.安装Java运行环境JRE(没这个Eclipse运行不起来)和JDK 官网下载 http://www.oracle.com/technetwork/java/javase/downloads/index.html, 先装JRE,再装JDK,这个没什么说的,直接点击下一步就好了.... 二.安装Android SDK 将

Android Studio 1.0.2项目实战——从一个APP的开发过程认识Android Studio

Android Studio 1.0.1刚刚发布不久,谷歌紧接着发布了Android Studio 1.0.2版本,和1.0.0一样,是一个Bug修复版本.在上一篇Android Studio 1.0.1 + Genymotion安卓模拟器打造高效安卓开发环境,我们介绍了Android开发环境的搭建,今天先来说一下上一篇中大家问道比较多的问题,然后说一些Android Studio的使用技巧.  一.搭建开发环境中遇到的问题及解决办法 1.Genymotion模拟器网络错误 我们顺利的安装完了G