前提:因为想要一起学习flutter,我把同事的flutter demo项目下载下来,一开始我以为是一个独立的flutter项目,想的就是如何把它先运行起来,后来发现并不是。下面是记录的使用android studio打开项目后遇到的一些问题,在此前我已经把flutter sdk安装完毕了,下面问题的结果大多都借鉴了很多其他博客的内容。
1、运行时遇到的第一个问题,找不到设备
后来发现会提示这个错误,有其他flutter正在运行,试了下打开控制台,把Dart进程都关闭,在flutter->bin->cache目录下删除了lockfile文件,然后重启as,打开项目发现可以找到设备了,目前就是这么解决的
2、第二个问题dart文件有很多红色的部分,根本运行不起来,错误如下
Flutter: 'package get' has not been run; 'Pub get' has not been run
上网查的意思是说flutter运行需要的依赖和一些包没有下载安装,理论上点击上面的get dependenceies就可以安装
但是我点击了之后发现没有用,基本是没有下载,原因也就和android一样,库国外的地址限制,那就需要配置flutter环境变量,也就是配置下载的的地址
在网上看很多人说直接open .bash_profile然后配置,但是我在windows目录下面也没找到这个文件,只能在环境变量里面配置了
右键我的电脑,选择属性找到环境变量,先在path里面加入flutter sdk的bin路径
然后再新建变量PUB_HOSTED_URL=https://pub.flutter-io.cn和FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn
然后再点击get dependenies再重启android studio就确实是可以了
3、依赖包下载下来了,但是运行失败,报错如下
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException
flutter:unable to find valid certification path to requested target
网上看了很多博客说是证书问题,但是我觉得可能并不是适用于我本地的flutter和android,可能还是仓库配置的问题,后来看了一些博客找灵感,里面有一个评论说先执行以下flutter doctor试试,因为我之前安装环境看了flutter的官方网站,当时我的理解是如果不使用命令行就不用对flutter进行环境变量配置,但是看到flutter doctor在里面也是有很多的介绍,看来是对flutter环境的一个检验命令,然后刚才我也配置好环境变量了,就直接执行了这个命令,发现确实有叹号没有准备好的地方
flutter doctor显示的问题如下
根据提示需要在Android Studio中启动SDK Manager,切换到sdk tools,去掉选项Hide Obsolete Packages,选择安装Android SDK Tools (Obsolete),Android SDK Tools被废弃了,但是好像Flutter还需要其提供支持,然后apply即可。但是即使做完了这个,还是会显示gradle 3.5.0下载不下来的问题
4、gradle3.5.0下载不下来
更改flutter项目里.android里面的build.gradle文件,更改build.gradle里面仓库的地址,把google和jcenter注释掉,buildscript和allprojects的都需要改,仓库连接改成之前用过的能用的仓库就好,我因为直接改成公司仓库了,就不贴出来了,没有参考意义,看网上很多都是使用的阿里云镜像。需要注意的是这个文件应该是生成的,每次进行flutter clean可能会重新生成这个文件,就不行了
然后再对flutter sdk的配置文件进行更改,该文件在Flutter安装目录/packages/flutter_tools/gradle/flutter.gradle
然后执行flutter run终于是可以了