新聞中心
為什么Flutter開發(fā)APP性能最接近原生,前端程序員請關(guān)注
Flutter是谷歌公司推出的跨終端的開發(fā)框架,支持Android、iOS和WEB終端。1.0版在2018年12月5日發(fā)布,目前的最新版本是1.5,它采用的開發(fā)語言是Dart,Dart也是谷歌開發(fā)的計算機編程語言,語法類似C,是編譯型語言:
成都創(chuàng)新互聯(lián)公司不只是一家網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司;我們對營銷、技術(shù)、服務(wù)都有自己獨特見解,公司采取“創(chuàng)意+綜合+營銷”一體化的方式為您提供更專業(yè)的服務(wù)!我們經(jīng)歷的每一步也許不一定是最完美的,但每一步都有值得深思的意義。我們珍視每一份信任,關(guān)注我們的網(wǎng)站設(shè)計、成都網(wǎng)站建設(shè)質(zhì)量和服務(wù)品質(zhì),在得到用戶滿意的同時,也能得到同行業(yè)的專業(yè)認可,能夠為行業(yè)創(chuàng)新發(fā)展助力。未來將繼續(xù)專注于技術(shù)創(chuàng)新,服務(wù)升級,滿足企業(yè)一站式成都營銷網(wǎng)站建設(shè)需求,讓再小的成都品牌網(wǎng)站建設(shè)也能產(chǎn)生價值!
hello world例子,打印字符串“Hello World!”:
1、沒有橋接層
React Native、Weex等技術(shù)都是跨終端的框架,然而性能跟原生App存在很大差距。這是由于它們的工作原理決定的:
React Native、Weex等技術(shù)多了一個橋接層,所以界面渲染會慢一些,由于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)代框架構(gòu)建的。 中心思想是您使用小部件構(gòu)建UI。
窗口小部件根據(jù)其當前配置和狀態(tài)描述了它們的視圖。 當窗口小部件的狀態(tài)發(fā)生更改時,窗口小部件會重建其描述,框架將根據(jù)前面的描述進行區(qū)分,以確定底層呈現(xiàn)樹從一個狀態(tài)轉(zhuǎn)換到下一個狀態(tài)所需的最小更改??梢灾苯釉贠S平臺提供的畫布上進行描繪,也就是一些核心類庫直接放到虛擬機里面,調(diào)用起來更快。
從它的系統(tǒng)結(jié)構(gòu)可以看出,類似安卓的ART(Android Run Time)虛擬機,同樣采用AOT(Ahead of TIme)技術(shù),會在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ā)框架,未來也會是構(gòu)建谷歌Fuchsia應(yīng)用的主要方式,前途不可限量,唯一的問題就是需要學(xué)習(xí)一門新的語言:Dart,而有Java或者C#語言基礎(chǔ)的程序員會比較容易學(xué)習(xí)。
Flutter 獲取App的版本號等信息
通過使用插件 package_info 可以獲取到當前APP的包名,版本名,版本號等信息。
修改+號后的構(gòu)建號,+號前的版本號。
在android和ios原生(ios必須打包)中能發(fā)現(xiàn)version變化
要使用這個插件,首先在工程的pubspec.yaml文件中加入對這個插件的依賴:
Flutter設(shè)置APP版本與構(gòu)建版本
當一個純Flutter APP開發(fā)完成,我們要打包發(fā)布到App Store和各大安卓市場,這時候我們需要設(shè)置APP的版本號。
如果我們在使用原生iOS或者Android開發(fā)的時,我們會在info.plist中設(shè)置 version 和 build 或是在build.gradle中設(shè)置 versionName 和 versionCode ,他們分別表示APP的版本和構(gòu)建版本。
但是我們在使用Flutter管理APP版本時,打開 pubspec.yaml 只看到一個 version 字段。這時候我們應(yīng)該怎么設(shè)置APP的 version 和 build 呢?
我們在pub上隨便找一個Flutter的組件,例如官方的 camera ,我們可以看到截止目前為止最新的版本為: camera: ^0.5.2+1 ??吹竭@里,我想大家都明白了,Dart采用的是加號式的版本描述方式, + 前面是版本號, + 后面是當前版本的build號。所以我們設(shè)置APP的版本號和build次數(shù),在這里設(shè)置即可,例如: version: 1.2.0+1 。
當我們新建一個Flutter工程的時候,我們分別使用Xcode和Android Studio打開iOS和Android的工程可以看到,iOS中的 version 和 build 的值分別為 FLUTTER_BUILD_NAME 和 FLUTTER_BUILD_NUMBER :
同樣我們打開Android工程可以看到有如下定義:
事實上,F(xiàn)lutter在編譯的時候會生成 ios/Flutter/Generated.xcconfig 和 android/local.properties 文件。這兩個文件由Flutter編譯自動生成,不可更改。記錄了包含SDK路徑或者文件路徑,版本信息,環(huán)境配置(release/debug)等信息。原生工程獲取版本信息的變量就定義在這兩個文件里面。
flutter 常見問題之a(chǎn)pp體積為何比較大
細心的開發(fā)者會發(fā)現(xiàn)flutter構(gòu)建的App體積比native的大一些,是什么原因造成App體積大呢?
其實flutter 在release時App體積和native的大小差不多,而debug時體積通常會大。debug版本體積較大是為了Hot reload和快速編譯。如果有flutter開發(fā)經(jīng)驗的朋友都體驗過,如果您修改一下App的背景顏色,只需save一下就可以立刻看到修改后效果。我稱之為“像藝術(shù)家一樣在創(chuàng)造App”,因此為了實現(xiàn)這些目標,提高開發(fā)的效率,debug將占用全部資源。而當我們構(gòu)建release版時,flutter又會采用AOT策略,提高App運行效率,release版只打包必需的資源,因而體積又會減少。
另外,flutter團隊也一直在尋找減小程序大小的方法。
Flutter開發(fā)App和原生iOS開發(fā)App各有什么優(yōu)缺點?
自己寫flutter也有段時間了,這次來聊聊flutter開發(fā)App和原生iOS開發(fā)App各有什么優(yōu)缺點.
不廢話,直奔主題????
Flutter開源app---開眼短視頻
在玩安卓上有款組件化開源app的項目,一款模仿 Eyepetizer | 開眼視頻的 開源app,這款app設(shè)計風(fēng)格特別喜歡的,比較簡潔,美觀,然后最近又在學(xué)flutter的知識,于是就寫了一款flutter版本的開源短視頻,效果也是聽不錯的,廢話不多說,先上效果圖。
先附上項目地址:
項目api會在后面的參考鏈接里,或者直接項目內(nèi)查看。
項目地址:
更新:6/30 項目新增下拉刷新,上拉加載功能
kotlin版本開眼短視頻開發(fā)中,敬請期待...
總結(jié):在此感謝參考的伙伴的文章,寫的也很好,然后我將這個項目改寫成了flutter,當中也學(xué)習(xí)到了很多flutter相關(guān)的知識,后續(xù)還有繼續(xù)鞏固,不斷學(xué)習(xí)。
參考鏈接(包含本項目的api)
當前文章:flutter論壇app,百度貼吧flutter
標題路徑:http://fisionsoft.com.cn/article/dsgdcee.html