前言:自从用上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'}
后续问题总结将继续更新

更多相关文章

  1. Android(安卓)属性动画工作原理
  2. Android语言国际化values资源文件命名规则
  3. Android(安卓)如何对/dev/log路径设备节点进行读写
  4. android adapter中到converView机制
  5. Android中Serializable和Parcelable的用法及区别
  6. 生成keystore
  7. 第6章 数据存储
  8. 详解Android中解析XML的方法
  9. Android(安卓)适配之FileProvider的使用

随机推荐

  1. Android中代码混淆和打包
  2. Android小说阅读器
  3. Android原生网络库HttpURLConnection分析
  4. Android(安卓)改变窗口标题栏的布局
  5. 一起学android之微信登录(18)
  6. 提高Android应用程序的速度四大原则
  7. Android4.4的init进程
  8. Android(安卓)ProGuard实例教程
  9. 我的 Android(安卓)开发实战经验总结
  10. Android(安卓)自定义View流程