Flutter是谷歌公司推出的跨終端的開發(fā)框架,支持Android、iOS和WEB終端。1.0版在2018年12月5日發(fā)布,目前的最新版本是1.5,它采用的開發(fā)語言是Dart,Dart也是谷歌開發(fā)的計算機編程語言,語法類似C,是編譯型語言:
成都創(chuàng)新互聯(lián)長期為千余家客戶提供的網(wǎng)站建設服務,團隊從業(yè)經(jīng)驗10年,關注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為同心企業(yè)提供專業(yè)的成都網(wǎng)站設計、成都網(wǎng)站建設、外貿(mào)網(wǎng)站建設,同心網(wǎng)站改版等技術服務。擁有10多年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。
hello world例子,打印字符串“Hello World!”:
1、沒有橋接層
React Native、Weex等技術都是跨終端的框架,然而性能跟原生App存在很大差距。這是由于它們的工作原理決定的:
React Native、Weex等技術多了一個橋接層,所以界面渲染會慢一些,由于UI渲染非常頻繁,想要不卡頓,基本上比較難,性能和用戶體驗跟原生代碼有差距。而這恰恰是Flutter的優(yōu)勢所在:
Dart可以被編譯成不同平臺的本地代碼,讓Flutter不通過橋接層直接跟平臺通信,自然性能會快一些。
2、編譯執(zhí)行
JavaScript是解釋執(zhí)行的,Dart是編譯執(zhí)行的,性能誰好一目了然。
3、Flutter Engine虛擬機
Flutter是依靠Flutter Engine虛擬機在iOS和Android上運行的,F(xiàn)lutter Engine使用C/C++編寫,開發(fā)人員通過Flutter框架直接和API在內(nèi)部進行交互,所以具有輸入低延遲和UI渲染高幀速率的特點。除了這特點之外,F(xiàn)lutter還提供了自己的小部件,F(xiàn)lutter小部件是使用從React獲取靈感的現(xiàn)代框架構建的。 中心思想是您使用小部件構建UI。
窗口小部件根據(jù)其當前配置和狀態(tài)描述了它們的視圖。 當窗口小部件的狀態(tài)發(fā)生更改時,窗口小部件會重建其描述,框架將根據(jù)前面的描述進行區(qū)分,以確定底層呈現(xiàn)樹從一個狀態(tài)轉換到下一個狀態(tài)所需的最小更改??梢灾苯釉贠S平臺提供的畫布上進行描繪,也就是一些核心類庫直接放到虛擬機里面,調用起來更快。
從它的系統(tǒng)結構可以看出,類似安卓的ART(Android Run Time)虛擬機,同樣采用AOT(Ahead of TIme)技術,會在APP安裝時就編譯成機器語言,不再解釋執(zhí)行,從而優(yōu)化了APP運行的性能。
4、自帶渲染引擎
Flutter使用谷歌自己的Skia渲染引擎,而Android系統(tǒng)自帶Skia引擎,iOS平臺上Flutter也會把Skia引擎打包到APP中,從而實現(xiàn)了高效渲染。而React Native通過橋接層訪問原生UI,操作頻繁就容易出性能問題。
綜合所述,F(xiàn)lutter 是性能最接近原生代碼 的一種開發(fā)框架,未來也會是構建谷歌Fuchsia應用的主要方式,前途不可限量,唯一的問題就是需要學習一門新的語言:Dart,而有Java或者C#語言基礎的程序員會比較容易學習。
1,執(zhí)行 flutter pub publish--dry-run 檢查是否具備發(fā)布條件
遇到的問題1:
It‘s strongly recommended to include a “homepage“ or “repository“ field
解決方案:在 pubspec. yaml ?中配置 主頁 homepage 地址 :
homepage:
可參考:
2,執(zhí)行 flutter pub publish--server= 發(fā)布
如果執(zhí)行flutter pub publish發(fā)布的話會遇到以下錯誤,國內(nèi)還是用?flutter pub publish--server= 來發(fā)布
package repository requested authentication! You can provide credential using:pub token add
問題1:It looks like accounts.google.com is having some trouble. Pub will wait for a while before trying to connect again. OS Error: Operation timed out, errno = 60, address = accounts.google.com, port = 53481 pub finished with exit code 69
原因:
1、國內(nèi)墻;
2、flutter環(huán)境配置添加了國內(nèi)鏡像
解決方式:
1、翻墻;
2、屏蔽環(huán)境變量里關于flutter的國內(nèi)鏡像;
屏蔽方式如下:
# export PUB_HOSTED_URL=
# export FLUTTER_STORAGE_BASE_URL=
3、設置終端代理命令(這個是我解決的方式),這個非常重要,不然就會報上面超時錯誤了
如果出現(xiàn):Flutter pub finished with exit code 1
解決方式:flutter packages pub publish --server=
此問題原文鏈接:(畢竟要尊重版權)
問題2:LICENSE這個文件中不能有TODO,也不能為空,可找個flutter庫看看別人是怎么寫的
1.Handshake error in client(OS Error: CERTIFICATE_VERIFY_FAILED: ok(handshake.cc:352))
打開~/.ios/Runner.xcworkspace,選擇項目對應的證書
然后pod install?
ps:我這邊是通過以上方法解決,但是不確定是通過以上哪一步,預計是選擇項目證書解決的
2.Cannot find "xcodebuild". Xcode 11.0 or greater is required to develop for iOS.
Could not build the precompiled application for the device.
Error launching application on iPhone7ll.