项目编译异常的一些问题汇总

项目编译异常的一些问题汇总

开发中总是经常遇到一些很奇怪的问题导致编译失败, 这里做一个记录, 方便遇到类似问题解决起来更加容易. 建议全局搜索异常信息来快速定位解决方案.没有的话就可以去看其他文章,避免浪费时间.

在控制台使用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

你可能感兴趣的:(Android开发)