关于AndroidStudio出现 XX is not allowed here 这一问题的解决办法

关于AndroidStudio出现 XX is not allowed here 这一问题的解决办法


近期重拾以前写过的一个东西的代码,想要复制到新的电脑上跑跑看,结果就发现了这个问题,具体表现为:某些代码按理讲应该合规但是 被标红了,还只是显示“XX XXXXX is not allowed here”。build按键并不管事,而且就算重新编译也没有效果。

但最大的问题在于,在网上没有找到相关资料。
帖子里贴出来的基本上只会说什么你SDK里面安装的api版本和你这个文档不符啦之类的,然后就没有更详细的解释了,也没有贴出进一步的解决办法。

但其实解决方法非常简单,主要分为两步:

  1. 首先找到你项目的根目录下的build.gradle文件,并将文件内容改写为
buildscript {

    repositories {
        maven{ url'http://maven.aliyun.com/nexus/content/groups/public/'}
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.2.0'
        
    }
}

allprojects {
    repositories {
        maven{ url 'http://maven.aliyun.com/nexus/content/groups/public/'}
        google()
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

其实就是在repositories{} 当中google() 前添加了一句 maven{ url’http://maven.aliyun.com/nexus/content/groups/public/’}罢了,是不是感觉很眼熟?对,其实就是解决相应依赖下载的问题。

  1. 找到AndroidStudio中File菜单下有一个ProjectStructure选项,并在里面查看你关于api相关的设定,确定你设定的api版本和你项目使用的是相同的。
    在这里插入图片描述你或许会发现这其中设定和你想象的有所出入,和你以前在文件中进行编辑有所不同,刚刚更新了Android Studio我对此没有太多的头绪,唯独知道这样管使。
    顺带,如果你在这其中的设定毫无问题,那么为了代码能够跨过自检而重新编译,还是需要你改变其中一项设定,哪怕是无意义的改变Build Tools版本也可以。

这之后代码就会重新编译,项目重新build,问题解决。

以下是关于问题如何产生的一点点分析,可以不必注意。

其实,整个事情主要还是因为众所周知的国内这个下载环境造成的,最近因为更新以及一些问题导致AndroidStudio挂载Proxy反而会导致一些问题,按照查看的教程删除了一些文件重新build,虽然是的确过了,但是也导致了一定的问题:

虽然是我个人推测,但整个过程很有可能其实是因为尽管依赖缺失,但是在互联网状况不良的状况下,AndroidStudio使用了本地现有的数据进行build;build是可以成功的,但此时依赖是不全的,因此编译器给你查代码的时候发现了大量语义不明的引用,并且报错;但你如果rebuild,AndroidStudio还是根据本地依赖来编译,信誓旦旦的告诉你我build好了,但是编译器仍然会给你查出错误来毕竟根据当前添加的依赖,你这部分代码有问题啊。

所以解决方法很简单,就是添加完整依赖,给你整个gradle rebuild一下就好了。但是问题来了,如果不是设置上的变更,你再怎么rebuild也只会根据你本地现有的来,因为原本按AndroidStudio判断,build是成功了的,自然不会从头再给你找一遍,因此就出现了解决方法中要求修改ProjectStructure这一步。

总的来说大致就是如此,希望能帮到诸位。
以上。

  • 16
    点赞
  • 7
    评论
  • 61
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值