关于AndroidStudio3.0 升级你可能遇到的事
Posted JackWaiting
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于AndroidStudio3.0 升级你可能遇到的事相关的知识,希望对你有一定的参考价值。
升级 3.0 之后打开项目报错,这里记录一下解决的过程
首先升级 Gradle 版本,运行我们公司的标案项目,之前的 Gradle 版本是 2.1.2
进入正题:
运行Gradle报错
Gradle sync failed: Cannot choose between the following configurations of project :BaseCloudMusicResource:
- debugApiElements
- debugRuntimeElements
- releaseApiElements
- releaseRuntimeElements
All of them match the consumer attributes:
- Configuration 'debugApiElements':
- Found com.android.build.api.attributes.BuildTypeAttr 'debug' but wasn't required.
- Found com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' but wasn't required.
- Found com.android.build.gradle.internal.dependency.VariantAttr 'debug' but wasn't required.
- Found org.gradle.api.attributes.Usage 'java-api' but wasn't required.
- Configuration 'debugRuntimeElements':
- Found com.android.build.api.attributes.BuildTypeAttr 'debug' but wasn't required.
- Found com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' but wasn't required.
- Found com.android.build.gradle.internal.dependency.VariantAttr 'debug' but wasn't required.
- Found org.gradle... (show balloon)
看报错说明是因为依赖的一个 BaseCloudMusicResource , Google 说明新版中依赖项目的语法改变了,依赖包使用旧的语法没有报错,
旧版 compile project(‘:BaseCloudMusicResource’)
新版implementation project(‘:BaseCloudMusicResource’)
貌似现在依赖包也可以使用implementation
这里还提示一点, Gradle 文件中:
compile 替换为 implementation
apt 替换为 annotationProcessor
testCompile 替换为 androidTestImplementation
releaseCompile 替换为 releaseImplementation
这里注意一点 :compile fileTree(dir: ‘libs’, include: [‘*.jar’])
不需要替换 compile , 看样子只有依赖包的时候才需要替换
还有一点 , 有的依赖包替换成 implementation 提示找不到,换回 compile 又可以了
继续 Build gradle 提示需要更新 Android SDK Build Tools version 至 26.0.2
OK ,你说了算,更新。(PS:这里是强制必须更新,否则无法编译)
所有的 Modul 都升级后继续 Build,继续报错
Error:android-apt plugin is incompatible with the Android Gradle plugin. Please use 'annotationProcessor' configuration instead.
从错误日志和官方信息分析:大概的意思是从 Gradle4.1 后不再允许加载除 ‘com.android.application’ 外的 plugin ,行,你厉害。
继续 Google , 新版去掉了 android-apt ,所有项目删除 Gradle 中 apply plugin: ‘android-apt’, 只保留apply plugin: ‘com.android.application’
把 apt 替换为 annotationProcessor
这里我的项目加载的 Realm 原来的版本是 1.2.0,由于原来的版本是通过apt加载的,我只能更新最新的版本 4.2.0,结果发现他的API又改了,瞬间泪奔,行,我改。
改好之后继续Build,继续报错,此时心态有些蹦了。OK,来看错误日志
Information:Gradle tasks [:pickerview:generateDebugSources, :pickerview:generateDebugAndroidTestSources, :pickerview:mockableAndroidJar, :zhxflib:generateDebugSources, :zhxflib:generateDebugAndroidTestSources, :zhxflib:mockableAndroidJar, :wigetlib:generateDebugSources, :wigetlib:generateDebugAndroidTestSources, :wigetlib:mockableAndroidJar, :app:generateDebugSources, :app:generateDebugAndroidTestSources, :app:mockableAndroidJar]
D:\\zhihuixinfanWorkerSpace\\ZhiHuiXinFan\\app\\build\\intermediates\\manifests\\full\\debug\\AndroidManifest.xml
Error:(12) error: unknown element <uses-library> found.
Error:(12) unknown element <uses-library> found.
Error:java.util.concurrent.ExecutionException: java.util.concurrent.ExecutionException: com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details
Error:java.util.concurrent.ExecutionException: com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details
Error:com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details
Error:Execution failed for task ':app:processDebugResources'.
> Failed to execute aapt
Information:BUILD FAILED in 8s
Information:6 errors
Information:0 warnings
Information:See complete output in console
大概的意思是找不到指定的标签,what ?,只能 Google 了,找到的解决办法如下:
在项目的gradle.properties中添加如下代码:
android.enableAapt2=false
OK,暂时还不明白这个配置的含义,后面再深究。
来,接着Build。Boom!!!!还是报错了。
Error:Unable to resolve dependency Could not resolve com.android.support:recyclerview-v7:26.2.1.
<a href="openFile:/Users/zhanggang/Documents/gitlab/android-sports-bnsports/Relax/build.gradle">Open File</a><br><a href="Unable to resolve dependency for ':Relax@debug/compileClasspath': Could not resolve com.android.support:recyclerview-v7:26.2.1.">Show Details</a>
几个意思,你让我升级到 26.0.2 又无法给我解析这个依赖项?
算你狠,解决方法如下:
appcompat-v7:26.1.0
修改
implementation 'com.android.support:appcompat-v7:26.2.1'
改为
implementation 'com.android.support:appcompat-v7:26.+'
同理对应的 design、recycleyView等都是这种改法。
继续Build,习惯了,还是报错
Android dependency 'com.android.support:appcompat-v7' has different version for the compile (23.4.0) and runtime (26.1.0) classpath. You should manually set the same version via DependencyResolution
此错误的意思是说项目中依赖了2个不同的版本,好吧,估计是不同的第三方库再升级后冲突了,如果你能很果断的分析除是哪个库,可以果断的把他 用 exclude过滤掉,然而我的这个项目第三方库比较多,用这个方法及其耗时,而且效果欠缺,这个发现一个干货的方法,可以统一所有的版本。
手机在root gradle 添加如下代码;
subprojects
project.configurations.all
resolutionStrategy.eachDependency details ->
if (details.requested.group == 'com.android.support'
&& !details.requested.name.contains('multidex') )
details.useVersion "$supportlib_version"
ext
supportlib_version = '26.+'
然后在 module gradle中添加如下代码即可控制版本号
dependencies
compile "com.android.support:appcompat-v7:$supportlib_version"
compile "com.android.support:recyclerview-v7:$supportlib_version"
...
编译过后还是会报一些与应用相关的兼容问题,这里与大家项目不一致,在这里不做阐述了,今天就到这了。
以上是关于关于AndroidStudio3.0 升级你可能遇到的事的主要内容,如果未能解决你的问题,请参考以下文章
ANDROID STUDIO 3.0 升级:错误:无法解析配置“:app:xxxxxxxDebugCompileClasspath”的所有文件