官網:flutter.dev/docspython
環境:瀏覽器
AndroidStudio 3.3.1框架
FlutterSdk 1.2.1函數
Flutter 是 Google推出並開源的移動應用開發框架,主打跨平臺、高保真、高性能。開發者能夠經過 Dart語言開發 App,一套代碼同時運行在 iOS 和 Android平臺。Flutter使用本身的高性能渲染引擎來繪製widget,Flutter使用Skia做爲其2D渲染引擎,Skia是Google的一個2D圖形處理函數庫,包含字型、座標轉換,以及點陣圖都有高效能且簡潔的表現,Skia是跨平臺的。佈局
因爲Android系統已經內置了Skia,因此Flutter在打包APK(Android應用安裝包)時,不須要再將Skia打入APK中,但iOS系統並未內置Skia,因此構建iPA時,也必須將Skia一塊兒打包,這也是爲何Flutter APP的Android安裝包比iOS安裝包小的主要緣由。性能
Flutter高性能主要靠兩點來保證,首先,Flutter APP採用Dart語言開發。Dart在 JIT(即時編譯 Just-in-time)模式下,速度與 JavaScript基本持平。可是 Dart支持 AOT(靜態編譯 Ahead of time),當以 AOT模式運行時,JavaScript便遠遠追不上了。速度的提高對高幀率下的視圖數據計算頗有幫助。其次,Flutter使用本身的渲染引擎來繪製UI,佈局數據等由Dart語言直接控制,因此在佈局過程當中不須要像RN那樣要在JavaScript和Native之間通訊,這在一些滑動和拖動的場景下具備明顯優點,由於在滑動和拖動過程每每都會引發佈局發生變化,因此JavaScript須要和Native之間不停的同步佈局信息,這和在瀏覽器中要JavaScript頻繁操做DOM所帶來的問題是相同的,都會帶來比較可觀的性能開銷。動畫
程序主要有兩種運行方式:靜態編譯與動態解釋。靜態編譯的程序在執行前所有被翻譯爲機器碼,一般將這種類型稱爲AOT (Ahead of time)即 「提早編譯」;而解釋執行的則是一句一句邊翻譯邊運行,一般將這種類型稱爲JIT(Just-in-time)即「即時編譯」。AOT程序的典型表明是用C/C++開發的應用,它們必須在執行前編譯成機器碼,而JIT的表明則很是多,如JavaScript、python等。ui
基於JIT的快速開發週期:Flutter在開發階段採用,採用JIT模式,這樣就避免了每次改動都要進行編譯,極大的節省了開發時間; 基於AOT的發佈包: Flutter在發佈時能夠經過AOT生成高效的ARM代碼以保證應用性能。而JavaScript則不具備這個能力。插件
Flutter Engine 這是一個純 C++實現的 SDK,其中包括了 Skia引擎、Dart運行時、文字排版引擎等。在代碼調用 dart:ui庫時,調用最終會走到Engine層,而後實現真正的繪製邏輯。翻譯