背景
目标是用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的低版本后,问题解决
1万+

被折叠的 条评论
为什么被折叠?



