Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化建构工具。它使用一种基于Groovy的特定领域语言来声明项目设置,而不是传统的XML。当前其支持的语言限于Java、Groovy和Scala,计划未来将支持更多的语言。(百度上拿来的)
至于gradle的更多详情,感兴趣的小伙伴可以阅读http://www.cnblogs.com/davenkin/p/gradle-learning-1.html
下面我们就列举一些因gradle的原因导致的错误
错误1
- 导入项目时的错误
作为一个程序猿,在工作之余查看别人的代码,借鉴别人的思维是很重要的,而快捷方便的方式无疑是将别人的项目从github或别的地方下载下来,然后导入我们自己的AS中,然后再慢慢炮制,但如果我们在导入项目的时候报出如上错误,!!!
好了废话不多说,看解决办法
- 只需要在项目外层的builde.gradle中添加如下代码
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.3'
}
}
allprojects {
repositories {
mavenCentral()
}
注意!!
- 上面红色箭头所指的部分,并不一定要和楼主的一样,最好找到你自己可以运行的项目,然后降之拷贝过来替换掉
错误2
依然是导人项目时容易出现的错误
解决办法
- 在最外层的build.gradle的allprojects中添加如下代码,尤其是下面红色箭头标注的地方
allprojects {
repositories {
jcenter()
maven { url "https://jitpack.io" }
}
}
错误3
Error:No resource identifier found for attribute ‘roundIcon’ in package ‘Android’
roundIcon是个高版本里面才有的东东,低版本是没有的,一般是由于调节targetSdkVersion版本造成的
解决办法:
删除清单文件中的:
android:roundIcon=”@mipmap/ic_launcher_round” 这句话就OK了
只要看到Error:No resource identifier……,肯定是xml文件里面出问题了,盯着找就好了
如果是in package ‘XXX’,这个多半就是自己定义的控件在应用的时候出了问题。
**
错误4
**
android studio更新2.0后出现的Gradle sync failed: Unknown host等gradle问题解决办法
听说这次as更新2.0后可以实时调试,我靠,这么牛瓣的更新诱惑让我迫不及待的更新了,下载安装后默认打开了之前的项目,发现Gradle一直出现问题,开始是Gradle sync failed: Unknown host ‘jcenter.bintray.com’. You may need to adjust the proxy settings in Gradle. Consult IDE log for more details (Help | Show Log)
这种问题,好吧,我上网搜索解决办法,改了build.gradle和gradle.properties,什么的,然后发现消除一个问题会又出现一个问题,正当我后悔更新的时候突然想到了可不可以用as2.0新建一个项目然后把build.gradle和gradle.properties替换了之前项目的这两个玩意,抱着试一试的心态给它替换了,结果….当然是搞定了!然后可以尽情的享受instant debug了,哈哈哈~
https://docs.gradle.org/current/userguide/userguide_single.html#sec:accessing_the_web_via_a_proxy
**
错误5
**
解决办法
gradle-wrapper.properties里修改了gradle的版本,与之前没有报错的gradle版本一致。就可以了
错误六6
自从AS升级到3.0后gradle又出现了许多新坑
gradle:3.0.0出现Error:(43, 0) Cannot set the value of read-only property ‘outputFile’ for ApkVariantOutputImpl_Decorated{apkData=Main{type=MAIN, fullName=debug, filters=[]}} of type com.android.build.gradle.internal.api.ApkVariantOutputImpl.
解决办法
出错在最后一行,应该是新版Gradle的问题,最后在Stackover Flow找到解决办法,参考
把 variant.outputs.each 改成
variant.outputs.all
最后一行改成
outputFileName = fileName
错误7
Error:All flavors must now belong to a named flavor dimension. Learn more at https://d.android.com/r/tools/flavorDimensions-missing-error-message.html
解决办法
defaultConfig {
targetSdkVersion:*
minSdkVersion :*
versionCode:*
versionName :*
//版本名后面添加一句话,意思就是flavor dimension 它的维度就是该版本号,这样维度就是都是统一的了
flavorDimensions “versionCode”
}
错误8
Error:java.util.concurrent.ExecutionException: com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details
解决办法
在gradle 3.0.0中AAPT2是默认打开的,在项目的gradle.properties中添加android.enableAapt2=false,sync后就编译通过了。
欢迎关注作者微信公众号