【工具】flutter安装入门(无AS)

2,017 阅读3分钟

前言

1.本人工具折腾怪。我只是想体验下flutter又不想安装Android studio罢了(直接上Android studio就没啥折腾呢。。),如果不想折腾可以退出该文章👀了。

2.window系统,自己装上 git 和 jdk8 ,稍微熟悉android和命令行

3.流程概述:安装flutter、命令行安装android sdk(flutter调用它以编译apk)、安装gradle(也可不手动安装,gradle缺失会自动下载)

正文

安装 flutter sdk

官网下载解压 或 git clone 一个flutter项目的stable分支下来。设置几个环境变量(流程省略,可右转百度):

PUB_HOSTED_URL=https://pub.flutter-io.cn
FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn

两个是代理相关的,然后老规矩把flutter主目录下的bin加到PATH环境变量去(方便到处执行flutter.bat)

下边输入flutter doctor检查还缺失了什么(它提示的idea、vscode的报错不用管)。一般而言是缺失Android toolchain,下面开搞。

安装 Android SDK

developer.android.google.cn/studio#comm…

注意是 Command line tools only 里下载 sdk-tools-windows-4333796.zip 这个就行了。

下载完解压,核心执行文件为tools\bin下的sdkmanager.bat,他会把其余的platform、build-tools等文件夹下载到与tools同目录下。(有目录洁癖的请注意了,自行调整)

sdkmanager.bat 文档

输入sdkmanager.bat --list ,如下显示:

它会显示Available Packages,下载对应的包只需如sdkmanager.bat "platform-tools" "platforms;android-28",直接把包名当参数即可。

我们只装3个必需的包,即 build-tools(构建工具)、platform-tools(平台无关的辅助工具,如adb等)、platforms(即平时说的安卓4.4、6.0等区别),一次跑完下载最新的包:

sdkmanager.bat "build-tools;29.0.2" "platform-tools" "platforms;android-29"

然后添加 环境变量 ANDROID_HOME=D:\android-sdk (自行改具体值)让flutter识别即可。然后再执行flutter doctor --android-licenses解决license问题即可。

最后flutter doctor一下,Android toolchain应该会显示好了

注:

  1. jdk请想办法更改为jdk8,因为jdk9开始移除了一些东西,sdkmanager运行将报错找不到类
  2. 关于UI工具,目前还可以从一些地方下载到旧的sdk tools,里面有SDK Manager.exe但没有sdkmanager.bat ,可以用来下载buildtool等。但是请注意tools本身也需要更新(flutter只认sdkmanager.bat),而运行时无法删除文件使得无法正确更新文件,最终呈现各种奇怪bug。这里建议还是别再折腾ui了,只下载sdk的话,命令行其实够好用了。
  3. 代理、镜像不用设置了。2019年亲测

vscode 或 idea

直接搜dart和flutter插件安装上即可。创建新的项目时,它们如果有bug,建议直接flutter create porject命令行创建。

gradle

下载解压后添加两个环境变量: GRADLE_HOME(gradle主目录) 和 GRADLE_USER_HOME(gradle用来存放下载的jar包和管理的各个gradle版本)。

搞过android原生的应该熟悉这个。实际上是个独立工具,与Android并不绑定。简易说下(可不看):

  1. gradlew.bat脚本:检测是否已安装gradle(检查环境变量),如果存在则把它接收到的参数传递给GRADLE_HOME\bin\gradle.bat;否则下载gradle到你的~里面自动安装再传递
  2. GRADLE_USER_HOME\wrapper\dists 存放各个gradle。当发现所需的gradle版本下不动时,试试手动下载对应的gradle zip放到GRADLE_USER_HOME\wrapper\dists\gradle-4.10.2-all\9fahxiiecdb76a5g3aw9oi8rv\下即可。
    注意,最后那个目录名是根据gradle-wrapper.propertieshttps\://services.gradle.org/distributions/gradle-4.10.2-all.zipmd5计算出来的,算法如下:
// 参数string="https://services.gradle.org/distributions/gradle-4.10.2-all.zip" ,即去掉了转义的'\'
private String getHash(String string) {
    try {
        MessageDigest messageDigest = MessageDigest.getInstance("MD5");
        byte[] bytes = string.getBytes();
        messageDigest.update(bytes);
        return new BigInteger(1, messageDigest.digest()).toString(36);
    } catch (Exception e) {
        throw new RuntimeException("Could not hash input string.", e);
    }
}

也可让gradle自动下载以生成该目录,然后中断下载,手动下载对应gradle并拖放进去。

调试运行

adb(在platform-tools里,使用教程右转百度)连接上虚拟设备/真机调试,项目目录运行flutter run或者IDE里点击运行即可。