Android Studio flutter关于GradleException和NonNull报错的问题
- 问题描述
- build.gradle的报错
- 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项目没有引进gradle的库,所以gradle的东西会报错,那既然已经追踪到问题,解决起来就好办了,详情请看方案四
解决方案
(方案一)暴力解决
优点:迅速,准确,强迫症表示非常舒服
缺点:自己体会吧
- 把new GradleException改成new Exception
- 删掉@NonNull注解,以及对应引入的包
(方案二)优雅忽略
优点:清净
缺点:自己体会
- 关闭现在打开的android/…里的所有出错的文件
- 重启Android Studio
- 不再打开有问题的文件,专注于lib文件夹
- 没有红色出现了
(方案三)心理清洁
优点:我没发现优点
缺点:。。。
根据上面的问题探索,明白了不是软件,或者是代码的问题,是flutter插件的bug,感觉非常舒服,也就不会在意红色波浪线了
(方案四)正式解决
优点:的确解决了问题
缺点:比较耗时间
原因已经查明是flutter项目初始化的时候没有导入graddle的库导致的,下面就是引入graddle的库和Nonull的jar包
- 用Android Studio打开flutter项目内部嵌套的android原生项目(就是以project打开的/android文件夹),并等待加载包和索引完成
- 下拉找到External Libraries,找到上面提到的包,右键属性
- 选择Libraries Properties查看文件路径,比如我新引入的包的位置C:\Users\86198\.gradle\caches\modules-2\files-2.1\androidx.annotation\annotation\1.1.0\e3a6fb2f40e3a3842e6b7472628ba4ce416ea4c8(好复杂的位置。。。)提示:这样可以赋复制地址,点击加号后出现了地址
- 在flutter项目中打开Project Structure,选中Libraries
- 添加选择Java,然后输入刚才查看的地址,引入包的时候两个项目都要选(其实只要选安卓的项目就好了,如果能分出来的话)
- 添加后选择apply应用,确定
- 添加完成,对应的java文件报错消失了
至于build.gradle( ̄︶ ̄)↗ 我坦白,没找到怎么去掉红色波浪线
不过看继承关系改成RuntimeException可以暂时用一用,后续找到办法,我会再补充
原创,转载需注明出处
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)