Flutter是Google发布的一个用于创建跨平台、高性能移动应用的框架。

flutter ios 编译sdk flutter 编译原理_flutter ios 编译sdk

开发者可以很快地为 Flutter添加 native扩展,使用自己的高性能渲染引擎来绘制widget,这样不仅可以保证在Android和iOS上UI的一致性,而且也可以避免对原生控件依赖而带来的限制及高昂的维护成本。

程序主要有两种运行方式:静态编译与动态解释。静态编译的程序在执行前全部被翻译为机器码,通常将这种类型称为AOT (Ahead of time)即 “提前编译”;而解释执行的则是一句一句边翻译边运行,通常将这种类型称为JIT(Just-in-time)即“即时编译”。

Flutter框架使用函数式流,这使得它在很大程度上依赖于底层的内存分配器。

flutter ios 编译sdk flutter 编译原理_flutter ios 编译sdk_02

  • 底下两层(Foundation和Animation、Painting、Gestures)在Google的一些视频中被合并为一个dart UI层,对应的是Flutter中的dart:ui包,它是Flutter引擎暴露的底层UI库,提供动画、手势及绘制能力。
  • Rendering层,这一层是一个抽象的布局层,它依赖于dart UI层,Rendering层会构建一个UI树,当UI树有变化时,会计算出有变化的部分,然后更新UI树,最终将UI树绘制到屏幕上,这个过程类似于React中的虚拟DOM。Rendering层可以说是Flutter UI框架最核心的部分,它除了确定每个UI元素的位置、大小之外还要进行坐标变换、绘制(调用底层dart:ui)。
  • Widgets层是Flutter提供的的一套基础组件库,在基础组件库之上,Flutter还提供了 Material 和Cupertino两种视觉风格的组件库。而我们Flutter开发的大多数场景,只是和这两层打交道。

Flutter Engine

这是一个纯 C++实现的 SDK,其中包括了 Skia引擎、Dart运行时、文字排版引擎等。在代码调用 dart:ui库时,调用最终会走到Engine层,然后实现真正的绘制逻辑。

https://flutter.io/community/china 以获得有关镜像服务器的最新动态。

获取Flutter SDK,解压并添加环境变量

下载地址1:https://flutter.dev/docs/development/tools/sdk/releases

下载地址2:https://github.com/flutter/flutter/releases

运行 flutter doctor命令,查看是否还需要安装其它依赖,如果需要,安装它们

安装Android Studio

运行flutter channel查看所有分支

升级Flutter SDK和依赖包

flutter upgrade
  • flutter packages get获取项目所有的依赖包。
  • flutter packages upgrade 获取项目所有依赖包的最新版本。

Android Studio 配置与使用--安装Flutter和Dart插件

VS Code的配置与使用--

VSCode下编写Flutter

安装Flutter插件

import 'package:flutter/material.dart';
import 'package:flutter/semantics.dart';
import 'package:flutter/widgets.dart';
import 'packet:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget{
  @override
  Widget build(BuildContext context){

    return MaterialApp(
      title: "Wecome to Futter",
      home: Scaffold(
        appBar: AppBar(
          title: Text('Wecome to Futter'),
        ),
        body: Center(
          child: Text('Hello World'),
        ),
      ),
    );
  }
}