前言:自从用上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(安卓)APK签名
  2. 【DiskLruCache完全解析】Android(安卓)AdapterView图片硬盘缓存
  3. android与Unity3D之间的相爱相杀
  4. Androidの短信拦截方法详解
  5. Android搜索过滤
  6. android前端和java后端通过RSA加密方式传递数据时出现javax.cryp
  7. Android(安卓)kotlin之对象和类(2)
  8. 五、android中解析xml
  9. Android裁剪图片总结

随机推荐

  1. 安装go第三方库的方法
  2. go语言之goroute协程
  3. golang写爬虫乱码怎么办
  4. Go接口interface的用法介绍
  5. Go语言执行流程详解
  6. golang能写操作系统吗
  7. golang如何判断字符串是否为空
  8. golang如何判断目录是否存在
  9. golang如何清空map
  10. go语言依赖管理介绍