Android Studio flutter关于GradleException和NonNull报错的问题

问题描述

Android Studio代码飘红,缺运行正常,但是这简直是不可忍受的

build.gradle的报错

在Android Studio新建Flutter项目的时候,建立完成后,再/android/app/build.gradle中会有一段报错,让我看起来很不爽
在这里插入图片描述

NonNull的报错

同时再/android/app/src/main/java下的文件夹中,初始生成的MainAvtivity.java文件也会报错
在这里插入图片描述
提示是androidx.annotation包没有找到NonNull这个包

问题追踪及尝试解决

收i先查看Android sdk里自带的包,果不其然在Android Api里还真没有这个包
在这里插入图片描述
接着想到从外部导入包,既然没有包那自然就可以引入包。于是我在android/app/build.gradle尝试引入了包
implementation ‘androidx.annotation:annotation:1.1.0’(注意不是andriod/build.gradle
在这里插入图片描述
但是居然没有提示我sync,在这一我感受到了一点不对劲。这时候我注意到了这个
在这里插入图片描述
点开发现是一个内部嵌套的安卓项目,在安卓项目中重新索引之后有了,在安卓项目中并不报错

在这里插入图片描述
在这里插入图片描述
在android原生中一切正常,这个jar包,就是上面implementation里引入的包。那么问题应该是flutter的插件问题,是flutter插件的bug,会报错,实际上并没有任何错误

在对比flutter项目和原生项目引入的库的时候发现了不一样的地方
原生:
原生项目
flutter项目:
flutter项目
也就是说flutter项目没有引进gradle的库,所以gradle的东西会报错,那既然已经追踪到问题,解决起来就好办了,详情请看方案四

解决方案

(方案一)暴力解决

优点:迅速,准确,强迫症表示非常舒服
缺点:自己体会吧

  • 把new GradleException改成new Exception
  • 删掉@NonNull注解,以及对应引入的包

(方案二)优雅忽略

优点:清净
缺点:自己体会

  1. 关闭现在打开的android/…里的所有出错的文件
  2. 重启Android Studio
  3. 不再打开有问题的文件,专注于lib文件夹
  4. 没有红色出现了

(方案三)心理清洁

优点:我没发现优点
缺点:。。。
根据上面的问题探索,明白了不是软件,或者是代码的问题,是flutter插件的bug,感觉非常舒服,也就不会在意红色波浪线了

(方案四)正式解决

优点:的确解决了问题
缺点:比较耗时间
原因已经查明是flutter项目初始化的时候没有导入graddle的库导致的,下面就是引入graddle的库和Nonull的jar包

  1. 用Android Studio打开flutter项目内部嵌套的android原生项目(就是以project打开的/android文件夹),并等待加载包和索引完成
  2. 下拉找到External Libraries,找到上面提到的包,右键属性在这里插入图片描述
  3. 选择Libraries Properties查看文件路径,比如我新引入的包的位置C:\Users\86198\.gradle\caches\modules-2\files-2.1\androidx.annotation\annotation\1.1.0\e3a6fb2f40e3a3842e6b7472628ba4ce416ea4c8(好复杂的位置。。。)提示:这样可以赋复制地址,点击加号后出现了地址在这里插入图片描述
  4. 在flutter项目中打开Project Structure,选中Libraries
  5. 添加选择Java,然后输入刚才查看的地址,引入包的时候两个项目都要选(其实只要选安卓的项目就好了,如果能分出来的话)在这里插入图片描述
  6. 添加后选择apply应用,确定
  7. 添加完成,对应的java文件报错消失了在这里插入图片描述
    至于build.gradle( ̄︶ ̄)↗ 我坦白,没找到怎么去掉红色波浪线

    不过看继承关系改成RuntimeException可以暂时用一用,后续找到办法,我会再补充

原创,转载需注明出处

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值