Android Studio cannot resolve sy

2019-04-01  本文已影响0人  MiBoy

欢迎来到我的简书,如果你搜到了我这,说明你也遇到了这个问题。这里应该是解决这个问题的最全方案。我这有两种方案,一个是其他人的智慧方案,一个是我的解决方案。

其他人的方案:

https://stackoverflow.com/questions/17421104/android-studio-marks-r-in-red-with-error-message-cannot-resolve-symbol-r-but/32382873

这个方案集合了市面上大多数的解决方法,很全,虽然是英文的,但是也不难看懂,有问题的小伙伴不妨先看一下他的,能不能解决。如果不能的话,再去看下我的解决方案。

我的解决方案

首先抛出我的问题,我是从github上去下载了一个demo,发下会出现这个问题,我用的AS是3.2版本的,但是Demo里面的AS Gradle插件是用的3.3.1版本的,这里导致了一个兼容性问题,所以才出现了R文件找不到的问题。

有人会问了,什么是AS Gradle 插件:rootProject下面的build.gradle文件中的classpath 'com.android.tools.build:gradle:3.2.1这个就是插件的版本号,gradle 之所以能在As里面原因,或者我们能用gradle 就是有了这个插件,这个插件就是一个工具,所以为啥要叫...tools.build...,那么还有个问题,有了插件,但也要用相应的实质内容啊,那就需要一个Gradle版本,这个版本的控制是在gradle-wrapper.properties里面,比如:

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https://services.gradle.org/distributions/gradle-4.10.1-all.zip

后面的那个版本就是Gradle的版本,他们之间有个匹配关系:

版本匹配

简单来说,Gradle插件的版本号和As的版本号是一一对应的,我再AS3.2版本用了AS3.3.1版本里面的插件,就出问题了,导致了处理不了R文件

解决方案:

把AS Gradle插件的版本号改成与当前AS的版本号相匹配的版本,Gradle版本与之一样,基本上就能解决爆红,首先先用其他人的方案去试一下,

参考链接:

上一篇 下一篇

猜你喜欢

热点阅读