Android Studio 3.0 踩坑记录

下载Android Studio 3.0,并安装,不做细讲

之后打开项目提示让更新gradle到4.1(这里指的是gradle/wrapper/gradle-wrapper.properties中的版本)

distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip

同时,将根目录中的build.gradle中的gradle更新到了3.0.0,原来是2.3.1

classpath’com.android.tools.build:gradle:3.0.0′

之后就是漫长的等待,然后就报错了

Error:Cannotchoose between the following configurations of project :lp_messaging_sdk:

– debugApiElements

– debugRuntimeElements

– releaseApiElements

– releaseRuntimeElements

上网搜索了一下解决方案,在stackoverflow 上看到一个解决方案

地址:https://stackoverflow.com/questions/45679847/android-studio-3-0-compile-issue-cannot-choose-between-configurations

就是compile project(path: ‘:lp_messaging_sdk’, configuration: ‘default’)

这个解决方案慎用,我用了之后导致出现了其他的意想不到的bug(依赖库中的jar包中的API不能使用了,这个问题研究了好久,最后把configuration: ‘default’删除掉才好了,还是自己对gradle不够了解)

实际上面那个问题是android-apt导致的,把他替换成annotationProcessor就可以了,看来stackoverflow上的解决方案也有坑啊,而且这个解决方案还被很多人采纳了。。。。

在去掉了android-apt,并替换apt为annotationProcessor后,重新编译,接着问题又来了:

Error:The specified Android SDK Build Tools version (25.0.0) is ignored, as it is below the minimum supported version (26.0.2) for Android Gradle Plugin 3.0.0.

Android SDK Build Tools 26.0.2 will be used.

To suppress this warning, remove “buildToolsVersion ‘25.0.0’” from your build.gradle file, as each version of the Android Gradle Plugin now has a default version of the build tools.

这个问题还是比较好解决的,他已经给出了解决方案,就是这句话:To suppress this warning, remove “buildToolsVersion ‘25.0.0’” from your build.gradle file, as each version of the Android Gradle Plugin now has a default version of the build tools.意思就是,移除掉你的buildToolsVersion,因为新的gradle有自己默认的buildTools。

在删除了  buildToolsVersion ‘25.0.0’  之后再次编译,错误又来了:

Error:Failed to resolve: com.android.support:multidex:1.0.2

Add Google Maven repository and sync project

这个也好解决Add Google Maven repository and sync project,这个就不用翻译了吧,在根目录对应的build.gradle中加入google()。

repositories {

google()

jcenter()

mavenCentral()

}

再次编译之后竟然好了,小项目上的问题果然少,在我的另一个大项目上还出现了一个问题:

Failed to transform file ‘xxx.aar’ to match attributes {artifactType=android-exploded-aar} using transform ExtractAarTransform

这个问题也折腾了挺长时间的,实际上就是你的项目中有bug,导致你的那个想要的aar没有生成,你可能想我之前没bug呀,这也没办法,切换的时候会生成一些莫名其妙的bug。但是有bug你就提示bug吧,提示上面的问题就是google的不对了。好在在网上找到了2种解决方案,一种是把gradle版本降下去,这个虽然可以解决问题,但我不提倡,不能回避问题嘛。第二种方案是清除缓存文件,将C:\Users\\.gradle\caches\transforms-1删除,重新编译项目,你的bug就暴露出来了,但是只是一次,你再编译又出现上面的错误提示了。所以,要先将暴露出来的bug解决掉了,(我开始就是以为不是bug呢,结果再次编译就不报哪个bug了,然后就陷入了死循环)。解决掉bug后再次编译还可能会出现上面错误提示,那就是还有bug呗,再清缓存,再编译,再解决bug,直到编译通过。

上面的那个bug的体现形式不止那一种,还有可能是:

Failed to transform file ‘xxx.jar’ to match attributes {artifactType=android-classes} using transform JarTransform

就是jar包找不到嘛,解决方案和上面一样。

到此,就踩完坑了。去体验一下Android Studio3.0的一些新工具吧

    原文作者:laomao_老毛
    原文地址: https://www.jianshu.com/p/730f6d5a923c
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞