开发中总是经常遇到一些很奇怪的问题导致编译失败, 这里做一个记录, 方便遇到类似问题解决起来更加容易. 建议全局搜索异常信息来快速定位解决方案.没有的话就可以去看其他文章,避免浪费时间.
在控制台使用gradle命令关闭lint检查进行编译,-profile 用于生成报告:
gradle build -x lint -profile
编译时因为调整了构建版本,导致出现如下错误:
Error:Failed to resolve: com.android.support:support-v4:26.1.0
原因是在低版本gradle中没有 google()这个库存在,直接注释掉之后as没办法找到对应的support库.
解决办法如下:
allprojects {
repositories {
// google()
jcenter()
maven {
url "https://maven.google.com"
}
}
}
在全局仓库配置中,加入 url "https://maven.google.com"
这个地址就可以了
在引入第三方库时遇到如下错误:
Manifest merger failed with multiple errors, see logs
这是因为Manifest合并冲突了.
常见的冲突原因有:
1. 工程与依赖库中,最小sdk版本不一致
2. android:icon, android:label, android:theme 等资源引用不一致
3. 配置了相同的FileProvider
解决办法:
1. 修改项目或依赖库中的版本,保持一致
2. 修改项目或依赖库中引用的资源保持一致,或者使用tools:replace="android:icon, android:label, android:theme"
,以工程中的配置为主.
3. 移除多余的FileProvider配置,或者继承FileProvider 配置新的文件提供者.
这里遇到的是第三种情况,不过情况比较特殊,依赖库中的文件提供者被注释了,但是依然触发了这个合并的错误,大概是个bug
注:通过Gradle Consle窗口可以查看编译时的详细错误信息,根据具体提示来进行修改
gradle同步失败,提示如下信息:
Unable to find method setDependencyCacheDir
经过排查,导致该问题的原因有两种:
1.使用的gradle编译工具版本,本地不存在,修改classpath 中的版本为自己电脑中已有的.
例如:
修改classpath 'com.android.tools.build:gradle:3.0.0'
为
classpath 'com.android.tools.build:gradle:2.2.3'
2.gradle版本与gradle编译工具版本不兼容.
解决办法,修改gradle-wrapper.properties 中的版本为自己使用的版本,然后同步gradle
注: 建议上面两点都进行修改,修改为自己使用的版本.
gradle编译工具版本升级为3.0.1后提示如下错误信息:
Cause:com.android.build.gradle.api.BaseVariant.getOutputs()Ljava/util/List;
原因是跟引用的其他编译工具冲突,我这里是与butterknife插件冲突
解决办法是降到8.4.0即可,如下
classpath "com.jakewharton:butterknife-gradle-plugin:8.4.0"
运行时提示如下错误:
Error:All flavors must now belong to a named flavor dimension.
解决办法,在主build文件中加入 flavorDimensions “versionCode” 即可
android {
compileSdkVersion 25
buildToolsVersion "25.0.2"
defaultConfig {
...
minSdkVersion 19
targetSdkVersion 25
versionCode 1
versionName "1.0"
flavorDimensions "versionCode"
...
}
}
运行clone下来的项目时出现如下错误, 大致意思是说网络连接有问题, 让我们尝试重新同步, 然而这个原因大多是因为gradle版本不兼容导致的,:
Re-download dependencies and sync project (requires network)
将gradle-wrapper.properties配置中使用的gradle版本调整为自己常用的即可:
比如我这里是3.0.1版本的studio,默认使用的gradle版本如下:
distributionUrl=https://services.gradle.org/distributions/gradle-4.1-all.zip