成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

flutter開(kāi)發(fā)鴻蒙,flutter鴻蒙系統(tǒng)

華為鴻蒙系統(tǒng)Harmony OS真的讓谷歌慌了嗎?

在討論Harmony OS是否真的讓谷歌慌了之前,我們先來(lái)對(duì)比一下兩個(gè)操作系統(tǒng),從架構(gòu)出發(fā)對(duì)比一下兩個(gè)操作系統(tǒng)的設(shè)計(jì)理念和目標(biāo)是否是一樣的。

創(chuàng)新互聯(lián)專(zhuān)注為客戶(hù)提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、常州網(wǎng)絡(luò)推廣、成都微信小程序、常州網(wǎng)絡(luò)營(yíng)銷(xiāo)、常州企業(yè)策劃、常州品牌公關(guān)、搜索引擎seo、人物專(zhuān)訪(fǎng)、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供常州建站搭建服務(wù),24小時(shí)服務(wù)熱線(xiàn):18980820575,官方網(wǎng)址:jinyejixie.com

HarmonyOS整體遵從分層設(shè)計(jì),從下向上依次為:內(nèi)核層、系統(tǒng)服務(wù)層、框架層和應(yīng)用層。系統(tǒng)功能按照“系統(tǒng) 子系統(tǒng) 功能/模塊”逐級(jí)展開(kāi),在多設(shè)備部署場(chǎng)景下,支持根據(jù)實(shí)際需求裁剪某些非必要的子系統(tǒng)或功能/模塊。HarmonyOS技術(shù)架構(gòu)如下所示。

系統(tǒng)服務(wù)層是HarmonyOS的核心能力集合,通過(guò)框架層對(duì)應(yīng)用程序提供服務(wù)。該層包含以下幾個(gè)部分:

根據(jù)不同設(shè)備形態(tài)的部署環(huán)境,基礎(chǔ)軟件服務(wù)子系統(tǒng)集、增強(qiáng)軟件服務(wù)子系統(tǒng)集、硬件服務(wù)子系統(tǒng)集內(nèi)部可以按子系統(tǒng)粒度裁剪,每個(gè)子系統(tǒng)內(nèi)部又可以按功能粒度裁剪。

框架層為HarmonyOS應(yīng)用開(kāi)發(fā)提供了Java/C/C++/JS等多語(yǔ)言的用戶(hù)程序框架和Ability框架,兩種UI框架(包括適用于Java語(yǔ)言的Java UI框架、適用于JS語(yǔ)言的JS UI框架),以及各種軟硬件服務(wù)對(duì)外開(kāi)放的多語(yǔ)言框架API。根據(jù)系統(tǒng)的組件化裁剪程度,HarmonyOS設(shè)備支持的API也會(huì)有所不同。

應(yīng)用層包括系統(tǒng)應(yīng)用和第三方非系統(tǒng)應(yīng)用。HarmonyOS的應(yīng)用由一個(gè)或多個(gè)FA(Feature Ability)或PA(Particle Ability)組成。其中,F(xiàn)A有UI界面,提供與用戶(hù)交互的能力;而PA無(wú)UI界面,提供后臺(tái)運(yùn)行任務(wù)的能力以及統(tǒng)一的數(shù)據(jù)訪(fǎng)問(wèn)抽象。FA在進(jìn)行用戶(hù)交互時(shí)所需的后臺(tái)數(shù)據(jù)訪(fǎng)問(wèn)也需要由對(duì)應(yīng)的PA提供支撐。基于FA/PA開(kāi)發(fā)的應(yīng)用,能夠?qū)崿F(xiàn)特定的業(yè)務(wù)功能,支持跨設(shè)備調(diào)度與分發(fā),為用戶(hù)提供一致、高效的應(yīng)用體驗(yàn)。

Fuchsia OS整體也采用分層架構(gòu)設(shè)計(jì),也被分為了4個(gè)不同層次。

對(duì)于不太了解內(nèi)核作用的同學(xué)簡(jiǎn)而言之,Zircon之于Fuchsia,恰如Linux之余于A(yíng)ndroid。Linux內(nèi)核驅(qū)動(dòng)了多個(gè)操作系統(tǒng),很多操作系統(tǒng)構(gòu)建在它之上,比如 Ubuntu、Android、Manjaro、ArchLinux、Debian、Red Hat、SUSE 甚至 Chrome OS ,所以我們也可以大膽預(yù)測(cè),如果未來(lái)Fuchsia OS 發(fā)展良好, Zircon 內(nèi)核也被證明好用,那么很有可能有更多的操作系統(tǒng)采用這一新內(nèi)核。

系統(tǒng)服務(wù)層(Garnet)

也是直接構(gòu)建在 Zircon 上的一層名叫 Garnet。 Garnet 包含各種操作系統(tǒng)所需的各種底層功能,包括硬件的驅(qū)動(dòng)程序(網(wǎng)絡(luò),圖形等)和軟件安裝。這一層最激動(dòng)人心的事情是 Escher(圖形渲染器),Amber(Fuchsia 更新程序)和Xi Core,它是Xi文本和代碼編輯器的底層引擎(今年早些時(shí)候已經(jīng)發(fā)布了)。

模塊管理層(Peridot)

Peridot 是接下來(lái)的這一層,主要處理Fuchsia的模塊化應(yīng)用程序設(shè)計(jì), Peridot的另外兩個(gè)主要組件直接用于模塊。 Ledger 可以跨設(shè)備保存您在應(yīng)用/模塊中的位置,并同步到您的Google帳戶(hù)。Maxwell 是一個(gè)更復(fù)雜的主題,需要更多進(jìn)一步地深入研究,但是 Maxwell 極有可能是讓 Fuchsia 充分施展魔力的點(diǎn)睛之筆,可以提前透露的是,Maxwell 的厲害之處包括 Kronk,也是大家熟知的 Google Assistant。

應(yīng)用層(Topaz)

Topaz,是這個(gè) Layer Cake 蛋糕的頂層,也是對(duì)開(kāi)發(fā)者和用戶(hù)直接影響最大的一層。Topaz 提供 Flutter 支持,而有了Flutter 的支持,各種華麗的應(yīng)用程序,可以幫助充實(shí)地提供日常使用的功能齊全的應(yīng)用程序。比如,現(xiàn)在最令人印象深刻的當(dāng)然是 Armadillo UI,它是 Fuchsia 的主要用戶(hù)界面和主屏幕。

可以做一個(gè)類(lèi)比,Topaz 這一層在 Android 中可以找到一個(gè)對(duì)照,這將是你的必備應(yīng)用程序,如聯(lián)系人,音樂(lè),文件管理器和文本編輯器 Xi(Topaz中的可視前端連接到Garnet的后端)。即使沒(méi)有你需要的東西,你也可以簡(jiǎn)單方便地安裝。

Harmony OS 與 Fuchsia OS的主要相同點(diǎn):

Harmony OS 與 Fuchsia OS的主要不同點(diǎn):

個(gè)人認(rèn)為Harmony OS成功的可能性更大。雖然從生態(tài)上來(lái)說(shuō),谷歌可以利用Android建立的生態(tài)伙伴優(yōu)勢(shì)推廣Fuchsia OS,但也恰恰是Android完善的生態(tài)會(huì)給Fuchsia OS的推廣造成最大障礙。

相反Harmony OS從架構(gòu)上更符合物聯(lián)網(wǎng)時(shí)代的需求,然后華為作為主導(dǎo)者具備強(qiáng)大的硬件制造能力,Harmony OS在華為很多手機(jī)上已經(jīng)推送,國(guó)內(nèi)很多公司的冰箱、空調(diào)等也都在采用華為鴻蒙系統(tǒng)。這些都有利于Harmony OS系統(tǒng)的產(chǎn)業(yè)化發(fā)展。

當(dāng)然,從全球大環(huán)境來(lái)說(shuō),Harmony OS可以在國(guó)內(nèi)做成功,但是要想在國(guó)際上推廣難度是非常大的。美國(guó)的 科技 霸權(quán),導(dǎo)致計(jì)算機(jī)誕生以來(lái)底層技術(shù)很少在美國(guó)之外的公司誕生并發(fā)揚(yáng)光大。Lua、Ruby等編程語(yǔ)言,Intellij IDEA等算是為數(shù)不多的例子。

Flutter 開(kāi)發(fā)筆記

下面這種情況下,為 InkWell 設(shè)置的 splashColor 不會(huì)生效:

需要用 Material 去除背景色,然后將顏色設(shè)置在 InkWell 外部:

在 Dialog builder 中使用 WillPopScope 禁用返回鍵返回:

注意:使用此方法同時(shí)也會(huì)禁用 iOS 上的手勢(shì)滑動(dòng)返回功能,推薦判斷平臺(tái)后再使用。

修改對(duì)話(huà)框中的復(fù)選框狀態(tài),最簡(jiǎn)便的方法是通過(guò) Element 中的 markNeedsBuild 方法:

當(dāng)然,更推薦的做法是通過(guò) StatefulBuilder ,然后就可以在 Dialog 中調(diào)用 setState 方法了,不過(guò)在調(diào)用 setState 時(shí)需要判斷 Dialog 是否已經(jīng)關(guān)閉,否則會(huì)造成 setState() called after dispose() 的錯(cuò)誤,可以通過(guò)添加一個(gè)標(biāo)志位來(lái)解決,如下:

在 Web 中加載網(wǎng)絡(luò)圖片有時(shí)會(huì)失敗,遇到這樣的報(bào)錯(cuò): Exception caught by image resource service... ,造成該錯(cuò)誤的原因通常是,圖片跨域了(見(jiàn) 跨域資源共享 )。最簡(jiǎn)單的解決辦法是, 使用 HTML 渲染加載 ,而不是默認(rèn)的 CanvasKit。

Flutter 中所有的 list 默認(rèn)都是沒(méi)有 ScrollBar 的,必須使用 ScrollBar 組件。ScrollBar 組件通過(guò)監(jiān)聽(tīng) ScrollView 的 ScrollNotification 來(lái)刷新位置,所以 List 的長(zhǎng)度必須是固定的。

當(dāng)使用 WebView 等高度不定的組件時(shí)會(huì)出現(xiàn)內(nèi)容被截?cái)嗟那闆r,通??梢允褂?NestedScrollView 來(lái)解決該問(wèn)題,需要在 WebView 外部嵌套 SingleChildScrollView。

雖然使用了緩存,而且也是用 builder 加載圖片的,但是發(fā)現(xiàn)一個(gè)現(xiàn)象:滑動(dòng)屏幕后圖片短暫消失并重新加載了。圖片高度很高時(shí)這種現(xiàn)象更加明顯,其原因是超出屏幕范圍一定距離的組件被重新渲染了。解決方法是在 ListView 上設(shè)置 cacheExtent 參數(shù):

該參數(shù)的作用是改變超出屏幕高度后繼續(xù)渲染的范圍(以像素為單位),比如設(shè)置成 9999 后意味著超出屏幕 10000 像素以?xún)?nèi)的內(nèi)容都會(huì)被保留下來(lái)。

借助 IntrinsicHeight 組件:

另外,IntrinsicHeight 還可以用于 Dialog 或者 BottomSheet 中,使得其中的元素 顯示內(nèi)在元素的高度 ,從而避免元素因?yàn)榧s束的存在而不顯示或者高度太高(比如在使用了 Column 或者 Row 的時(shí)候)。

在通過(guò) Uri 的 queryParameters 獲取 query 參數(shù)時(shí),發(fā)現(xiàn)有些鏈接會(huì)拋出下面異常:

造成該異常的原因是 Uri 默認(rèn)使用 utf-8 解碼超鏈接字符串,如果鏈接中包含非 utf-8 字符,就會(huì)造成上面的錯(cuò)誤,相關(guān) issue 見(jiàn): issue #31621 。目前該 issue 處于 open 的狀態(tài),暫時(shí)的解決辦法是,在所有使用到 queryParameter 的地方用 try..catch 捕捉可能拋出的異常。

Flutter 開(kāi)發(fā)非常依賴(lài)各種官方或第三方的插件,而在使用這些插件時(shí)多少都會(huì)遇到一些問(wèn)題,大部分問(wèn)題都可以通過(guò)搜索和查找 issue 來(lái)解決。這里記錄下一些我在使用部分插件時(shí)遇到的問(wèn)題及其解決方法。

目前該庫(kù)沒(méi)有圖片加載完成的回調(diào)(見(jiàn) issue #545 ),不過(guò)我們可以通過(guò)在 imageBuilder 中來(lái)添加回調(diào):

這是一個(gè)應(yīng)用內(nèi)更新插件,安卓 10 以上安裝時(shí)需要在 manifest 中添加以下內(nèi)容:

目前功能最強(qiáng)大的 WebView 插件,基本能滿(mǎn)足絕大部分移動(dòng)端網(wǎng)頁(yè)加載的需求,而且可定制化程度高。

一般通過(guò) CookieManager 修改 Cookie,攔截請(qǐng)求并修改請(qǐng)求對(duì)象的 Header 不會(huì)生效。

InAppWebViewOptions 的 userAgent 只在 iOS 上生效,而 applicationNameForUserAgent 只在 Android 上生效,所以最好的做法是分平臺(tái)設(shè)置 InAppWebViewOptions ,而且需要注意,由于設(shè)置 userAgent 后會(huì)覆蓋默認(rèn)的 UserAgent,所以如果需要在默認(rèn)的 UserAgent 上添加其它參數(shù),iOS 上需要通過(guò) InAppWebViewController.getDefaultUserAgent() 獲取默認(rèn) UserAgent 參數(shù),而 Android 不需要添加。

如果圖片源或者請(qǐng)求是 http 的,為了在 Android 上正常加載請(qǐng)求,必須在 AndroidInAppWebViewOptions 中將 mixedContentMode 設(shè)置為 AndroidMixedContentMode.MIXED_CONTENT_ALWAYS_ALLOW 。

當(dāng)我們想要設(shè)置全屏圖片的時(shí)候,由于默認(rèn)的 Constraint 會(huì)將圖片居中顯示,所以圖片四周會(huì)留有空隙。為了去除這個(gè)限制,我們需要 Xcode 中打開(kāi) LaunchScreen.storyboard,然后在 View Controller 的 View 和 LaunchImage 上的 Safe Area 去掉。

具體設(shè)置方法:右側(cè) Inspector 面板 Show the Size inspector 解選 Layout Margins 中的 Safe Area Relative Margins,拖動(dòng)圖片占滿(mǎn)全屏,然后根據(jù) View Controller Scene 的 Warning,更新 Constraint 就可以了。

在集成某些三方庫(kù)之后,在使用命令行運(yùn)行 iOS 模擬器的時(shí)候可能會(huì)遇到下面這個(gè)報(bào)錯(cuò):

這是因?yàn)?iOS 模擬器未來(lái)將會(huì)兼容 arm64 架構(gòu),但是目前還不支持,所以我們需要修改 Build Setting 使得能夠在 x86_64 的模擬器上運(yùn)行,操作步驟見(jiàn) 這里 。

為什么Flutter開(kāi)發(fā)APP性能最接近原生,前端程序員請(qǐng)關(guān)注

Flutter是谷歌公司推出的跨終端的開(kāi)發(fā)框架,支持Android、iOS和WEB終端。1.0版在2018年12月5日發(fā)布,目前的最新版本是1.5,它采用的開(kāi)發(fā)語(yǔ)言是Dart,Dart也是谷歌開(kāi)發(fā)的計(jì)算機(jī)編程語(yǔ)言,語(yǔ)法類(lèi)似C,是編譯型語(yǔ)言:

hello world例子,打印字符串“Hello World!”:

1、沒(méi)有橋接層

React Native、Weex等技術(shù)都是跨終端的框架,然而性能跟原生App存在很大差距。這是由于它們的工作原理決定的:

React Native、Weex等技術(shù)多了一個(gè)橋接層,所以界面渲染會(huì)慢一些,由于UI渲染非常頻繁,想要不卡頓,基本上比較難,性能和用戶(hù)體驗(yàn)跟原生代碼有差距。而這恰恰是Flutter的優(yōu)勢(shì)所在:

Dart可以被編譯成不同平臺(tái)的本地代碼,讓Flutter不通過(guò)橋接層直接跟平臺(tái)通信,自然性能會(huì)快一些。

2、編譯執(zhí)行

JavaScript是解釋執(zhí)行的,Dart是編譯執(zhí)行的,性能誰(shuí)好一目了然。

3、Flutter Engine虛擬機(jī)

Flutter是依靠Flutter Engine虛擬機(jī)在iOS和Android上運(yùn)行的,F(xiàn)lutter Engine使用C/C++編寫(xiě),開(kāi)發(fā)人員通過(guò)Flutter框架直接和API在內(nèi)部進(jìn)行交互,所以具有輸入低延遲和UI渲染高幀速率的特點(diǎn)。除了這特點(diǎn)之外,F(xiàn)lutter還提供了自己的小部件,F(xiàn)lutter小部件是使用從React獲取靈感的現(xiàn)代框架構(gòu)建的。 中心思想是您使用小部件構(gòu)建UI。

窗口小部件根據(jù)其當(dāng)前配置和狀態(tài)描述了它們的視圖。 當(dāng)窗口小部件的狀態(tài)發(fā)生更改時(shí),窗口小部件會(huì)重建其描述,框架將根據(jù)前面的描述進(jìn)行區(qū)分,以確定底層呈現(xiàn)樹(shù)從一個(gè)狀態(tài)轉(zhuǎn)換到下一個(gè)狀態(tài)所需的最小更改??梢灾苯釉贠S平臺(tái)提供的畫(huà)布上進(jìn)行描繪,也就是一些核心類(lèi)庫(kù)直接放到虛擬機(jī)里面,調(diào)用起來(lái)更快。

從它的系統(tǒng)結(jié)構(gòu)可以看出,類(lèi)似安卓的ART(Android Run Time)虛擬機(jī),同樣采用AOT(Ahead of TIme)技術(shù),會(huì)在A(yíng)PP安裝時(shí)就編譯成機(jī)器語(yǔ)言,不再解釋執(zhí)行,從而優(yōu)化了APP運(yùn)行的性能。

4、自帶渲染引擎

Flutter使用谷歌自己的Skia渲染引擎,而Android系統(tǒng)自帶Skia引擎,iOS平臺(tái)上Flutter也會(huì)把Skia引擎打包到APP中,從而實(shí)現(xiàn)了高效渲染。而React Native通過(guò)橋接層訪(fǎng)問(wèn)原生UI,操作頻繁就容易出性能問(wèn)題。

綜合所述,F(xiàn)lutter 是性能最接近原生代碼 的一種開(kāi)發(fā)框架,未來(lái)也會(huì)是構(gòu)建谷歌Fuchsia應(yīng)用的主要方式,前途不可限量,唯一的問(wèn)題就是需要學(xué)習(xí)一門(mén)新的語(yǔ)言:Dart,而有Java或者C#語(yǔ)言基礎(chǔ)的程序員會(huì)比較容易學(xué)習(xí)。

本文標(biāo)題:flutter開(kāi)發(fā)鴻蒙,flutter鴻蒙系統(tǒng)
本文URL:http://jinyejixie.com/article4/dssdeie.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營(yíng)銷(xiāo)、網(wǎng)站收錄、外貿(mào)網(wǎng)站建設(shè)網(wǎng)站設(shè)計(jì)、品牌網(wǎng)站建設(shè)、品牌網(wǎng)站設(shè)計(jì)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司
合川市| 扶沟县| 秭归县| 四子王旗| 二手房| 永定县| 永定县| 昆山市| 沁水县| 阜城县| 楚雄市| 正安县| 丰城市| 锡林郭勒盟| 平舆县| 盖州市| 左贡县| 绍兴市| 习水县| 北宁市| 当阳市| 会宁县| 包头市| 铜鼓县| 阳新县| 广汉市| 平武县| 长寿区| 驻马店市| 延安市| 阜新| 皮山县| 海原县| 沾益县| 九寨沟县| 铜川市| 玉门市| 甘洛县| 巴东县| 衢州市| 侯马市|