作为 Android 开发人员, 很有必要学习一下 Flutter, 那么 Flutter 是什么呢? 它到底有什么作用呢? 我们一一来揭晓.
Flutter 是谷歌的移动 UI 框架, 可以快速在 iOS 和 Android 上构建高质量的原生用户界面. Flutter 可以与现有的代码一起工作. 在全世界, Flutter 正在被越来越多的开发者和组织使用, 并且 Flutter 是完全免费, 开源的. 它也是构建未来的 Google Fuchsia 应用的主要方式. Fuchsia 是谷歌继 Android 和 Chrome OS 之后开发的第三个系统, 未来, 谷歌是计划将 Flutter 作为这款操作系统的构建方式的.
什么是 Flutter?
Flutter 实际上是一个包含多种内容的软件包, 它是用来创建移动 2D 应用程序 SDK 的软件开发包, 如果你计划在某些游戏中使用 3D 应用程序, 那么 Flutter 将无法满足你的需求, 但如果你的计划是在 App 商店中的大多数的 2D 应用程序, 那么 Flutter 就是你的选择.
Flutter 软件包中最重要的就是编程框架, 编程框架使用 Dart 作为编程语言. 而实际上, 我们不会直接调用 Dart, 所以我们不需要去深入学习 Dart 语言. Flutter 附带了大量的小控件, 能够帮助开发者省去很多功夫.
下载安装 Flutter
现在我们就来看看如何下载安装 Flutter, 首先浏览器搜索 Flutter, 找到官网进入, 点击 Get started.
选择对应的操作系统, 就会跳转至下载界面.
由于在国内访问 Flutter 有可能会受到限制, Flutter 官方为中国开发者搭建了临时镜像, 大家可以将如下环境变量加入到用户变量中.
- PUB_HOSTED_URL:https://pub.flutter-io.cn
- FULTTER_STORAGE_BASE_URL:https://storage.flutter-io.cn
Flutter 镜像设置完成以后, 接下来就可以获取 Flutter SDK 了. 去 Flutter 官网下载最新可用的安装包. 下载完成后解压即可.
解压完后, 打开 flutter 文件夹, 找到 flutter_console.bat, 双击运行, 进行命令行的安装.
当看到这样的一个控制台界面, 说明 Flutter 启动成功. 启动成功后, 我们还需要配置 Flutter 的环境变量. 需要将 bin 文件夹的位置配置到用户环境中. 需要注意的是: 这里配置的是用户变量, 不是系统变量. 将 bin 目录位置添加到用户变量的 path 中.
配置完后, 我们就可以使用 Flutter 命令了, 打开一个控制台, 输入指令:
flutter doctor
这是一条用于检查当前电脑是否包含运行 Flutter 的全部环境. 运行该条指令便会去自动下载所需资源.
需要注意的是, 打勾的地方说明资源下载成功, 而感叹号的位置说明资源下载异常, 我们需要去解决这些异常的下载, 才能使 Flutter 正常地运行.
解决资源异常问题
我这里因为有了 Android 的运行环境和 Android Studio 开发工具, 所以都是感叹号, 而没有这些东西的同学就会打一个红色的叉, 看到红色的叉也不要惊慌失措, 只需要将 Android 的环境下载好即可.
下载好 Android 环境后, 我们接着输入指令:
flutter doctor --Android-licenses
该条指令的作用是接受 Android 许可, 执行该条指令后会多次询问是否许可, 只需输入'y'回车即可.
再次输入 flutter doctor 来检查一下环境.
证明第二项的异常我们解决了.
接下来我们解决第三个异常, 也就是 Android Studio 的异常.
我们打开 Android Studio, 点击 File, 然后点击 Setting, 最后点击 Plugins, 打开插件窗口, 在该窗口中点击 Browse repositories, 选择从网络上下载插件. 在搜索框中搜索 Flutter 并下载, 在下载前 Android Studio 会询问是否同意下载 Dart 插件, 我们允许即可. 下载完成后重启 Android Studio, 我们再次到控制台中检查一下资源, 输入 flutter doctor 指令, 会发现, 第三项也打勾了, 问题成功解决.
第四项异常是因为 IDEA 没有安装 Flutter 的插件, 这里我们只用 Android Studio 进行开发, 所以可以不用管, 没有这个开发工具的同学也不会产生这个问题. 那么接下来, 我们看最后一个异常, 这个异常是因为现在没有设备连接, 所以我们必须准备一个 Android 设备.
创建 Flutter 项目并启动
经过前面的一些操作, Flutter 总算是成功安装上来了, 那么, 接下来, 我们就尝试创建一个 Flutter 项目并运行到设备上.
在这之前, 我们需要再设置一些信息, 在 Android Studio 中点击 File, 然后点击 Setting, 找到 Flutter 设置界面.
将我们最开始下载的 Flutter 的解压文件路径设置上去, Dart 我们可以不用设置, 它会自动去寻找路径. 设置完成后点击 OK, 然后新建一个 Flutter Project, 点击 Flutter Application.
点击 Next, 然后点击 Finish. 等待片刻, Android Studio 会自动帮我们构建开发环境. 构建完成后我们右上角选择一下运行设备, 然后点击运行.
然而点击运行之后, 有些同学会发现 Android Studio 停留在了这个界面.
再也没有变化过, 这不禁让人感到奇怪, 这么长的构建时间, 它到底在干什么? 其实这不奇怪, 展开 gradle-wrapper 文件夹.
发现了没, 构建工具并不存在, 所以, Android Studio 其实就是在下载构建工具, 通过观察文件夹变化, 我找出了它需要下载的版本.
这个版本确实是我所有构建版本中没有的, 然后因为网络的原因, 下载速度极慢, 于是便出现了刚才的那一幕, 所以, 该怎么解决呢? 两种办法, 要么就一直等, 网速再慢, 几十 MB 的东西下个一天还下不完吗? 哈哈, 开个玩笑. 第二个办法, 就是自己把它需要的构建版本下载好, 然后放到这个文件夹下面去. 当然, 还是有其它办法的, 就是去 gradle-wrapper.properties 文件中将构建工具版本改为自己已经有的, 这样也是可以的, 我就不演示了.
将下载完的构建工具放进去, 我们停止构建, 然后重新运行, 果然这一次就快了许多, 应用很快就运行到了 Android 设备上.
这是 Flutter 项目自动生成的, 我们并没有编写一条代码.
需要注意的是, 很多同学可能在这里还会遇到一些问题, 比如在运行的时候报这个错.
- Error:FAILURE: Build failed with an exception.
- * What went wrong:
- Could not resolve all files for configuration ':app:debugCompileClasspath'.
- > Could not resolve com.google.Android.gms:play-services-ads:latest.release.
- Required by:
- project :App
- > Could not resolve com.google.Android.gms:play-services-ads:12.0.1.
- > Could not get resource 'https://jcenter.bintray.com/com/google/android/gms/play-services-ads/12.0.1/play-services-ads-12.0.1.pom'.
- > Could not GET 'https://jcenter.bintray.com/com/google/android/gms/play-services-ads/12.0.1/play-services-ads-12.0.1.pom'.
- > Read timed out
- * Try:
- Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
- * Get more help at https://help.gradle.org
- BUILD FAILED in 35s
这还是因为网络的原因, 无法下载到这些资源文件, 解决方案如下:
在 project 级别下的 build.gradle 文件中添加如下代码:
- buildscript {
- repositories {
- google()
- jcenter()
- }
- dependencies {
- classpath 'com.android.tools.build:gradle:3.1.1'
- classpath 'com.google.gms:google-services:4.0.1' // 谷歌服务库依赖
- }
- }
- allprojects {
- repositories {
- google()
- jcenter()
- mavenCentral ()
- maven {url 'https://dl.bintray.com/jetbrains/anko'} // 这个是解决这个问题的关键
- }
- }
- task clean(type: Delete) {
- delete rootProject.buildDir
- }
这样问题应该就解决了, 我也不可能一一地列举出所有的问题, 如果大家还是碰到了问题, 可以自行百度解决.
总结
经历了千辛万苦, 第一个 Flutter 项目终于成功运行起来了. Flutter 打包出来的是纯原生应用, 和浏览器应用完全不同, 原生应用指的是安装在手机内部会带图标的应用, 这种应用是可以发布到 Android 市场或者 App Store 里面的.
最后贴上 gradle 构建工具的下载网址: http://services.gradle.org/distributions/
来源: http://www.bubuko.com/infodetail-3170630.html