flutter项目调试问题小结

背景

目标是用android studio + flutter 跑hello world

下载

android studio

我下载的是2024.3.2.15版本

最新版下载首页就能下:下载 Android Studio 和应用工具 - Android 开发者  |  Android Developers

历史版本可在归档列表下载:Android Studio 下载文件归档  |  Android Developers

注意,打开归档列表没东西是因为网页为中文,把语言改成英文,滑动到最底下选择同意,就能看到归档列表了

flutter

我下载的是3.22版本

在归档列表可下载历史版本:归档列表 | Flutter 中文文档 - Flutter 中文开发者网站 - Flutter

版本

android studio: m版本

flutter sdk:3.22版本

android studio 

不同版本会有差异,我用emulator运行项目,ladybug运行emulator会提示下载haxm,haxm在github才能下,国内访问github有时会访问不了。最后卸载了l版本,下载了m版本

flutter

刚开始下了最新版(3.32),发现和gradle,kotlin有些不兼容,提示要用gradle9.0以上版本,但gradle9.0又找不到包,调了半天,无果。

后来卸了,装了个3.22版本,调调能跑

困难

用flutter3.32+android studio m版本调了半天调不出来

配置

创建项目时flutter sdk path

创建flutter项目,会提示输入flutter sdk path,这里填环境变量配置的那个bin目录的上级目录就可以

环境变量

这俩必选要配,不知道配哪可配用户变量

这个可选配置,配flutter命令,配了可能方便些,任意cmd窗口都能执行flutter命令。找到flutter sdk的安装路径(解压路径),把bin目录绝对路径加到用户变量的path下

gradle

配置点如下,此处gradle版本是8.6,android studio版本是m

gradle下载源配国内镜像,如果用默认的services.gradle.org会超时

settings.gradle和build.gradle加上国内源,否则也可能超时

emulator

运行avd后可运行设备未显示emulator

检查android studio是否安装cmdl tools,在settings下sdk tools底下找到command line tools字样,若未安装则勾选,然后点确认或apply,点完了会弹窗下载,安装完comand line tools,退出android studio重新打开项目,重新运行avd,检查可运行设备是否显示avd

若还不行,可能licenses未接受,配了flutter环境变量前提下,打开一个cmd终端,输入flutter doctor --android-licenses 处理license是接受还是拒绝,完成后再重试检查是否能avd运行项目

项目运行

java和gradle版本不匹配

运行flutter doctor --verbose 检查android chain下面的build版本,即java版本,再对照java版本找合适的gradle版本。我用了java21,gradle最开始用了7.6,提示gradle和java版本不兼容,把gradle换成8.6就好了

可提升点

运行速度

emulator 用gradle构建很慢,可能电脑性能一般,或者下载各依赖软件太慢,可能都是在线下的,后续考虑此问题

其他问题

运行flutter项目报错不兼容 需要gradle9.0以上版本

检查flutter项目绝对路径是否有中文,如果有中文改成英文

flutter使用provider报错,提示Another exception was thrown: Tried to listen to a value exposed with provider, from outside of the widget tree.

将Provider.of<T>(context) 改为Provider.of<t>(context, listen: false)

StatlessWidget子类构造函数写法问题

问题描述:flutter项目在emulator运行报错

报错详情:

报错原因:因为项目导入了一些新模块如pytorch_lite, photo_manager等,引发版本不兼容报错,具体报错原因不清楚

规避方法:更换java jdk版本,默认使用flutter自带java 21,网上搜了一圈,把java从21改成17,就好了。改完java版本,还有要改gradle.properties和build.gradle里的一些版本配置,改完后flutter clean, flutter pub get,再重新跑,就跑过了

build.gradle:

gradle.properties:

问题描述:在emulator运行项目找包报错,提示kotlin-corotines-xxx-1.7.1.jd    不到

定位过程:怀疑仓库没包,仓库查找后未果,发现flutter项目配的阿里云仓库地址不对,应该配public,实际配了jcenter和public,jcenter在前面,在jcenter里找不到报错,把jcenter删掉就好了

原因:配置的阿里云maven仓库url不对,应为public,实际为jcenter

问题描述:在pubspec.yaml中导入pytorch_lite模块后一直报错camera_android_camerax的一个编译问题

定位过程:camera_android_camerax是导入pytorch_lite自动加载的一个依赖,依赖版本委托0.6.8,是dart 3.4.0下最新的一个版本,尝试降级版本到0.6.7+2后问题解决,不再报错

原因:版本问题,在pubspec.yaml中显式指定camer_android_camerax的低版本后,问题解决

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值