前言
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应该会显示好了
注:
- jdk请想办法更改为jdk8,因为jdk9开始移除了一些东西,sdkmanager运行将报错找不到类
- 关于UI工具,目前还可以从一些地方下载到旧的sdk tools,里面有
SDK Manager.exe但没有sdkmanager.bat,可以用来下载buildtool等。但是请注意tools本身也需要更新(flutter只认sdkmanager.bat),而运行时无法删除文件使得无法正确更新文件,最终呈现各种奇怪bug。这里建议还是别再折腾ui了,只下载sdk的话,命令行其实够好用了。 - 代理、镜像不用设置了。2019年亲测
vscode 或 idea
直接搜dart和flutter插件安装上即可。创建新的项目时,它们如果有bug,建议直接flutter create porject命令行创建。
gradle
下载解压后添加两个环境变量:
GRADLE_HOME(gradle主目录) 和 GRADLE_USER_HOME(gradle用来存放下载的jar包和管理的各个gradle版本)。
搞过android原生的应该熟悉这个。实际上是个独立工具,与Android并不绑定。简易说下(可不看):
gradlew.bat脚本:检测是否已安装gradle(检查环境变量),如果存在则把它接收到的参数传递给GRADLE_HOME\bin\gradle.bat;否则下载gradle到你的~里面自动安装再传递GRADLE_USER_HOME\wrapper\dists存放各个gradle。当发现所需的gradle版本下不动时,试试手动下载对应的gradle zip放到GRADLE_USER_HOME\wrapper\dists\gradle-4.10.2-all\9fahxiiecdb76a5g3aw9oi8rv\下即可。
注意,最后那个目录名是根据gradle-wrapper.properties的https\://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里点击运行即可。