最近AndroidStudio更新后,发现无法完成gradle sync,报的错误忘记截图了,反正上网查了说是gradle版本和JDK不兼容,就是我的gradle太低了,需要更新(这真是很奇怪,因为AS没有更新又不更新JDK的,怎么以前没有问题?萌新不懂)于是我就上网搜相关的博客更新,步骤也很简单,
其中最后一步是:
在android目录下,找到 build.gradle(注意有两个,选这个:build.gralde(project:xxxxx)),打开找到:
dependencies {
classpath ‘com.android.tools.build:gradle:3.6.1’
这个应该是gradle插件版本号(和gradle本身是两码事!我看了一篇博客,大概说就是gradle是一种项目构建工具,可以应用在很多平台上,不一定使用在AS里面;而这里的gradle插件则是AS应用gradle的工具)
然后我的gradle更新的是4.8.1版本的,网上说改成:
classpath ‘com.android.tools.build:gradle:3.0.0+’
就可以了,
##但是!
重新同步,然而又出现了问题:
“发现错误:Gradle sync failed: Unable to load class ‘javax.xml.bind.annotation.XmlSchema’.”,具体如下:
Gradle sync failed: Unable to load class ‘javax.xml.bind.annotation.XmlSchema’.
This is an unexpected error. Please file a bug containing the idea.log file.
Consult IDE log for more details (Help | Show Log) (21 s 455 ms)
(这个问题上网搜遍了就是找不到解答,自己又无意间弄好了,于是就想写一篇博客帮助遇到同样问题的人。)
解决办法很简单,我先是将:
classpath ‘com.android.tools.build:gradle:3.0.0+’
改成:
classpath ‘com.android.tools.build:gradle:3.2.0+’
然后重新同步,提示:
Plugin Update Recommended: Android Gradle Plugin is ready to update.
就是建议更新gradle插件。于是更新,之后重新同步就好了。并且,我之前的:
classpath ‘com.android.tools.build:gradle:3.2.0+’
变成了:
classpath ‘com.android.tools.build:gradle:3.6.1’
所以说,神奇的是,3.0.0+不会提示更新gradle插件,但改成3.2.0+就会提示更新!呵呵。。。
后来上网查了查gradle插件版本号和gradle版本号匹配问题,点这个
这篇文章里说到:
注意:请勿在版本号中采用动态依赖项(例如 ‘com.android.tools.build:gradle:2.+’),否则可能会导致意外的版本更新和难以解析的版本差异。
意思时用‘+’号可能有些问题…总之,尽量不用吧。