• build.gradle 各种错误解决总结


    前言:自从用上Android studio 之后,遇到各种gradle 的问题,前一段时间,把我经常遇到的问题总结了一下 ,大部分问题是Google 查到了,亲测可用之后,总结分享出来。也感谢这些前辈们处理完这些问题留下的宝贵经验总结。

    1.Gradle DSL method not found runProguard()

    从字面就能看出来,出现这个问题的原因是找不到runProguard()这个方法了(调用这个方法的地方在每个Module对应的build.gradle文件中)。
    这是因为,当Android Studio升级时,也自动的将项目下的build.gradle文件(不是Module对应的build.gradle!)下的内容修改成了:


       dependencies {
            classpath 'com.android.tools.build:gradle:1.0.0-rc4'
            // NOTE: Do not place your application dependencies here; they belong
            // in the individual module build.gradle files
        }

    而升级之前是这样的(以我的电脑为例,应该是类似的):

        dependencies {
            classpath 'com.android.tools.build:gradle:0.12.2'
            // NOTE: Do not place your application dependencies here; they belong
            // in the individual module build.gradle files
        }

    显然,最简单的解决方法是将gradle的版本改回去,此方法可能的确有效。
    但是,这种做法显然不是最好的方法。查阅官方文档之后(http://tools.android.com/tech-docs/new-build-system)之后发现,在新版本的gradle中,runProguard这个方法已经废弃了,并且改为新的方法了:minifyEnabled. 因此,正确的解决方法不是修改gradle的版本号,而是将项目中每个Module对应的build.gradle文件中的runProguard方法名改为minifyEnabled,即:

        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            }
        }

    问题完美解决。


    2.Error Plugin with id android-apt not found.note

    删除 Plugin with id ‘android-apt’ not found


    3.Could not find property outputFile on com android build gradle.note

    Android studio从1.0 RC 4升级到1.0(其实就是打了一个8M的patch)后,这个时候相应的gradle的版本也会直接使用“com.android.tools.build:gradle:1.0.0”,如果这时你在gradle文件中又用到outputFile就会出现上述的问题。好吧,其实这也是gradle团队搞的问题,有时候我们多希望gradle能像android一样,对旧版本有一个非常好的兼容性。
    废话不多说,直接说怎么解决这个问题吧,这个问题的原因是outputFile这个函数被换地方了。
    old:

    applicationVariants.all { variant ->
                ......
                variant.outputFile = new File(variant.outputFile.parent, name);
            ......
                }
    
    }

    new:

    applicationVariants.all { variant ->
                ......
                variant.outputs.each { output ->
                    output.outputFile = new File(output.outputFile.parent, name);
            ......
                }
    
    }

    按上述方式改就ok了。

    4.Gradle DSL method not found android().note

    解决方法:
    删掉最外层的build.gradle中的

    这里写图片描述

    android {
        compileSdkVersion 19
        buildToolsVersion '21.1.1'
    }
    后续问题总结将继续更新

    版权声明:本文为博主原创文章,未经博主允许不得转载。(转载请注明出自 AllenCoder)

  • 相关阅读:
    牛客网在线编程:解救小易
    牛客网在线编程:身份证分组
    牛客网在线编程:优雅的点
    用FlexSlider制作支付宝2013版幻灯片演示插件
    Mysql Join语法解析与性能分析详解
    SQL Server 动态行转列(参数化表名、分组列、行转列字段、字段
    jQuery 分页插件 jqPagination的使用
    Android图片异步加载之Android-Universal-Image-Loader
    C#随机函数random()典型用法集锦
    CSS自适应布局(左右固定 中间自适应或者右侧固定 左侧自适应)
  • 原文地址:https://www.cnblogs.com/allencoder/p/4830728.html
Copyright © 2020-2023  润新知