国产精品嫩草99av在线_一区在线视频观看_欧美高清一区_欧美 日韩 国产 一区_99精品欧美一区二区三区_久久大香伊蕉在人线观看热2_一色屋精品视频在线观看网站_在线亚洲国产精品网站_亚洲区一区二区三区_你懂的视频一区二区

當(dāng)前位置:首頁 > 科技  > 軟件

掘力計(jì)劃第 20 期:Flutter 混合開發(fā)的混亂之治

來源: 責(zé)編: 時(shí)間:2023-08-05 11:44:35 5276觀看
導(dǎo)讀在掘力計(jì)劃系列活動(dòng)第20場,《Flutter 開發(fā)實(shí)戰(zhàn)詳解》作者,掘金優(yōu)秀作者,Github GSY 系列目負(fù)責(zé)人戀貓的小郭分享了Flutter 混合開發(fā)的混亂之治。Flutter 基于自研的 Skia 引擎實(shí)現(xiàn)了跨平臺高性能渲染,但其獨(dú)立的渲染層帶

在掘力計(jì)劃系列活動(dòng)第20場,《Flutter 開發(fā)實(shí)戰(zhàn)詳解》作者,掘金優(yōu)秀作者,Github GSY 系列目負(fù)責(zé)人戀貓的小郭分享了Flutter 混合開發(fā)的混亂之治。lJz28資訊網(wǎng)——每日最新資訊28at.com

lJz28資訊網(wǎng)——每日最新資訊28at.com

Flutter 基于自研的 Skia 引擎實(shí)現(xiàn)了跨平臺高性能渲染,但其獨(dú)立的渲染層帶來了與 Android 混合開發(fā)的技術(shù)挑戰(zhàn)。經(jīng)過幾年的演進(jìn),Android 目前提供了多種混合渲染方案,但都無法完美解決問題,且共存于 Flutter API 中,增加了復(fù)雜性。本文將深入解析 Flutter Android 混合開發(fā)面臨的困境,以及開發(fā)者應(yīng)對策略。lJz28資訊網(wǎng)——每日最新資訊28at.com

Flutter 獨(dú)立的渲染機(jī)制lJz28資訊網(wǎng)——每日最新資訊28at.com

lJz28資訊網(wǎng)——每日最新資訊28at.com

Flutter 能夠跨平臺高性能渲染的關(guān)鍵在于其自研的 Skia 圖形渲染引擎。Skia 通過自身的 renderers、GPU 線程等直接與 GPU 層進(jìn)行交互,實(shí)現(xiàn)繪圖功能。這使得 Flutter 的渲染層可以獨(dú)立于 Android 的原生 UI 線程之外。lJz28資訊網(wǎng)——每日最新資訊28at.com

這種獨(dú)立的渲染機(jī)制給 Flutter 帶來很大優(yōu)勢,不依賴原生視圖層即可實(shí)現(xiàn)高效的跨平臺渲染。但是同時(shí)也導(dǎo)致了 Flutter 要與原生視圖進(jìn)行混合開發(fā)時(shí)的困難。lJz28資訊網(wǎng)——每日最新資訊28at.com

如果用一個(gè)簡單的類比,F(xiàn)lutter 更像是一個(gè)游戲引擎。想要往 Unity 這類游戲引擎中插入原生 Android 視圖,就像往 HTML 中直接嵌入一個(gè) Canvas 元素一樣困難。這需要游戲引擎提供針對性的接口與機(jī)制,將不同的 UI 系統(tǒng)進(jìn)行「適配」。lJz28資訊網(wǎng)——每日最新資訊28at.com

lJz28資訊網(wǎng)——每日最新資訊28at.com

針對這個(gè)問題,Android 和 Flutter 社區(qū)也經(jīng)歷了多年的探索,提供了一系列的混合渲染方案。lJz28資訊網(wǎng)——每日最新資訊28at.com

Android 混合渲染方案演進(jìn)lJz28資訊網(wǎng)——每日最新資訊28at.com

Android 在支持 Flutter 混合開發(fā)時(shí),經(jīng)歷了多種技術(shù)方案的演進(jìn)過程?,F(xiàn)階段主要存在以下三種混合渲染技術(shù):lJz28資訊網(wǎng)——每日最新資訊28at.com

VD 模式lJz28資訊網(wǎng)——每日最新資訊28at.com

lJz28資訊網(wǎng)——每日最新資訊28at.com

VD 全稱 Virtual Display,表示利用虛擬顯示的方式進(jìn)行混合渲染。其關(guān)鍵是采用 VirtualDisplay 將原生視圖渲染到一個(gè)內(nèi)存緩沖區(qū)中,得到相應(yīng)的渲染紋理。lJz28資訊網(wǎng)——每日最新資訊28at.com

Flutter 通過特定的 API 調(diào)用,可以獲取這個(gè)渲染紋理,并集成到自身的 Scene 中進(jìn)行統(tǒng)一渲染。lJz28資訊網(wǎng)——每日最新資訊28at.com

VD 最大的 特點(diǎn)就是渲染的控件其實(shí)不是真實(shí)存在屏幕位置,而是在內(nèi)存,所以容易有觸摸和鍵盤問題。lJz28資訊網(wǎng)——每日最新資訊28at.com

HC 模式 lJz28資訊網(wǎng)——每日最新資訊28at.com

lJz28資訊網(wǎng)——每日最新資訊28at.com

HC 全稱 Hybrid Composition。它的思路是直接將原生視圖通過 Add View 的方式添加到 Flutter 的 View 層次中,進(jìn)行物理層面的視圖混合。lJz28資訊網(wǎng)——每日最新資訊28at.com

lJz28資訊網(wǎng)——每日最新資訊28at.com

這種直接混合模式可以保存原生視圖的用戶交互,并且可與 Flutter 視圖自由疊加。但是由于需要跨線程同步渲染,可能會(huì)引入一定的性能開銷。lJz28資訊網(wǎng)——每日最新資訊28at.com

TLHC 模式lJz28資訊網(wǎng)——每日最新資訊28at.com

lJz28資訊網(wǎng)——每日最新資訊28at.com

TLHC 即 Texture Layer Hybrid Composition。這是 Android 團(tuán)隊(duì)後期提出的方案,試圖結(jié)合 VD 和 HC 兩種模式的優(yōu)點(diǎn)。lJz28資訊網(wǎng)——每日最新資訊28at.com

TLHC 會(huì)通過 hook 原生視圖的 onDraw 方法,將其渲染輸出重定向到內(nèi)存中,再提供給 Flutter 作為紋理。這樣既避免了線程同步,也可以像 HC 那樣自由布局。lJz28資訊網(wǎng)——每日最新資訊28at.com

但是 TLHC 不支持 SurfaceView 等基于獨(dú)立 Surface 的視圖類型。對于一些依賴 SurfaceView 的邏輯,如地圖或視頻播放,TLHC 存在兼容性問題。lJz28資訊網(wǎng)——每日最新資訊28at.com

共存的模式帶來的困境lJz28資訊網(wǎng)——每日最新資訊28at.com

經(jīng)過幾年的演進(jìn),F(xiàn)lutter 現(xiàn)在已經(jīng)可以通過上述三種模式支持 Android 混合開發(fā)了。但它們都存在自身的優(yōu)劣勢,無法解決所有的問題場景。lJz28資訊網(wǎng)——每日最新資訊28at.com

lJz28資訊網(wǎng)——每日最新資訊28at.com

更重要的是,這三種模式現(xiàn)在同時(shí)存在于 Flutter 的 API 中,可以被開發(fā)者同時(shí)使用:lJz28資訊網(wǎng)——每日最新資訊28at.com

Plain Text
// VD模式
initAndroidVew()

// HC模式
initSurfaceAndroidView()

// TLHC模式
initAndroidView() lJz28資訊網(wǎng)——每日最新資訊28at.com

這其實(shí)帶來了很大的復(fù)雜性。首先,開發(fā)者需要自行理解不同模式的適用場景,進(jìn)行正確的調(diào)用。lJz28資訊網(wǎng)——每日最新資訊28at.com

其次,隨著 Flutter 版本的演進(jìn),默認(rèn)的模式也在變化。例如在早期只有 VD,到 1.2 提供 HC,3.0 又引入 TLHC。這意味著在版本升級后,你的混合視圖可能會(huì)在不知情的情況下發(fā)生渲染模式變化,導(dǎo)致問題。lJz28資訊網(wǎng)——每日最新資訊28at.com

再者,TLHC 存在對 SurfaceView 的兼容性問題。就算默認(rèn)使用 TLHC,后續(xù)引入 SurfaceView 也可能觸發(fā)問題。lJz28資訊網(wǎng)——每日最新資訊28at.com

lJz28資訊網(wǎng)——每日最新資訊28at.com

除此之外,不同模式的性能開銷也存在差異。HC 和 TLHC 的額外渲染消耗需要評估。模式切換也可能影響渲染性能。lJz28資訊網(wǎng)——每日最新資訊28at.com

綜上所述,困擾 Flutter Android 混合開發(fā)的主要問題在于:lJz28資訊網(wǎng)——每日最新資訊28at.com

  1. 存在多種共存的渲染模式,各有特性,選擇復(fù)雜
  2. 模式之間兼容性存在,可能引入難以察覺的問題
  3. 性能開銷和穩(wěn)定性難以保證

這已經(jīng)成為困擾 Flutter 混合渲染的主要困境。lJz28資訊網(wǎng)——每日最新資訊28at.com

開發(fā)者應(yīng)對策略lJz28資訊網(wǎng)——每日最新資訊28at.com

面對復(fù)雜的混合渲染困境,F(xiàn)lutter 開發(fā)者也形成了一些應(yīng)對策略:lJz28資訊網(wǎng)——每日最新資訊28at.com

  1. 優(yōu)先使用 TLHC 模式,能覆蓋更多場景
  2. 調(diào)用時(shí)詳細(xì)指定模式,不要依賴默認(rèn)值
  3. 注意版本變更帶來的潛在問題
  4. 留意是否引入了 SurfaceView 等不兼容場景
  5. 評估不同模式的性能開銷區(qū)別
  6. 通過自身封裝控制模式變更范圍
  7. 提前測試不同模式的兼容性

當(dāng)然,這需要開發(fā)者對不同混合渲染模式有足夠的理解,才能做出正確的技術(shù)選型。實(shí)際使用中也需要關(guān)注模式帶來的兼容性風(fēng)險(xiǎn),建立健壯的自測方案。lJz28資訊網(wǎng)——每日最新資訊28at.com

未來 Flutter 混合渲染模式是否還會(huì)繼續(xù)增多也需要持續(xù)跟進(jìn)。理想情況下,如果能夠演進(jìn)出一個(gè)統(tǒng)一的混合解決方案,將大大簡化 Android 平臺的混合開發(fā)。lJz28資訊網(wǎng)——每日最新資訊28at.com

總結(jié)lJz28資訊網(wǎng)——每日最新資訊28at.com

Flutter 基于 Skia 的獨(dú)立渲染機(jī)制,給其在 Android 平臺的混合開發(fā)帶來了挑戰(zhàn)。經(jīng)過幾年探索,Android 形成了多種混合渲染方案。但都無法完美解決問題,它們的共存也增加了復(fù)雜性。lJz28資訊網(wǎng)——每日最新資訊28at.com

開發(fā)者需要深入理解不同模式,并有針對性地進(jìn)行場景選擇和風(fēng)險(xiǎn)評估。未來仍需要社區(qū)持續(xù)努力,簡化這一關(guān)鍵的技術(shù)難題,以進(jìn)一步發(fā)揮 Flutter 的跨平臺優(yōu)勢。lJz28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://m.rrqrq.com/showinfo-26-80-0.html掘力計(jì)劃第 20 期:Flutter 混合開發(fā)的混亂之治

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: 摸魚心法第一章——和配置文件說拜拜

下一篇: 2023 年的 Node.js 生態(tài)系統(tǒng)

標(biāo)簽:
  • 熱門焦點(diǎn)
Top 国产精品嫩草99av在线_一区在线视频观看_欧美高清一区_欧美 日韩 国产 一区_99精品欧美一区二区三区_久久大香伊蕉在人线观看热2_一色屋精品视频在线观看网站_在线亚洲国产精品网站_亚洲区一区二区三区_你懂的视频一区二区
欧美一区二区三区免费看| 这里只有精品99re| 91福利视频在线| 欧美xxxxxxxx| 一区二区三区资源| 国产电影精品久久禁18| 精品91在线| 67194成人在线观看| 一区二区中文字幕在线| 久久www免费人成看片高清| 欧美暴力喷水在线| 在线观看视频欧美| 亚洲视频一区在线| 国产精品一二三四| 欧美一进一出视频| 久久久国产精品午夜一区ai换脸| 日日夜夜免费精品| 亚洲午夜在线| 91麻豆精品国产自产在线观看一区| 亚洲人吸女人奶水| 成人av资源下载| 在线免费不卡电影| 亚洲日本丝袜连裤袜办公室| 国产成人自拍网| 一本色道久久综合亚洲91| 欧美极品少妇xxxxⅹ高跟鞋| 久久99热狠狠色一区二区| 99国产一区| 国产亚洲va综合人人澡精品| 国产一区在线看| 色噜噜久久综合| 亚洲综合无码一区二区| 欧美国产综合视频| 亚洲精品一区二区三区影院| 麻豆成人免费电影| 久久婷婷一区| 亚洲精品国产一区二区精华液| 色综合色综合色综合| 91精品国产综合久久蜜臀| 免费在线观看一区二区三区| 亚洲一区二区三区精品在线观看| 欧美激情一区在线观看| 本田岬高潮一区二区三区| 欧美日韩一级黄| 蜜桃av一区二区三区电影| 午夜亚洲一区| 亚洲午夜成aⅴ人片| 夜久久久久久| 亚洲乱码精品一二三四区日韩在线| 欧美在线亚洲| 国产午夜亚洲精品午夜鲁丝片| 岛国av在线一区| 日韩欧美国产麻豆| 国产成人在线看| 7777女厕盗摄久久久| 国产呦萝稀缺另类资源| 欧美精选一区二区| 国产精选一区二区三区| 欧美丰满少妇xxxxx高潮对白| 久久精品国产免费| 欧美三级资源在线| 国产资源在线一区| 日韩欧美高清在线| av一区二区不卡| 久久精品视频网| 欧美激情日韩| 日韩美女啊v在线免费观看| 亚洲美女少妇无套啪啪呻吟| 亚洲色图.com| 国产精品普通话对白| 国产色综合网| 蜜臀久久99精品久久久画质超高清| 国产欧美精品| 麻豆91在线播放免费| 欧美成人video| 影音先锋亚洲精品| 日本不卡一区二区| 国产婷婷色一区二区三区在线| 伊人激情综合| 激情综合网最新| 中文字幕av一区二区三区免费看 | 99国产欧美另类久久久精品| www国产精品av| 免费欧美日韩| 99久久精品国产观看| 激情深爱一区二区| 一区二区三区精品在线观看| 91精品国产高清一区二区三区| 成人性生交大片免费看中文网站| 久久久久综合| 成人在线综合网| 成人免费一区二区三区在线观看| 精品少妇一区二区三区视频免付费 | 久久国产精品99久久久久久老狼 | 国产精品vip| 亚洲黄色小说网站| 狠久久av成人天堂| 韩国精品免费视频| 亚洲bt欧美bt精品777| 久久先锋影音av| 欧美日韩一区精品| 可以看av的网站久久看| 午夜精品视频| 91麻豆视频网站| 国产成人精品免费网站| 青青青伊人色综合久久| 综合av第一页| 国产蜜臀97一区二区三区| 欧美精品v日韩精品v韩国精品v| 国产伦精品一区二区三区照片91| 伊人久久成人| 色综合天天视频在线观看| av在线播放不卡| 99精品欧美一区| 亚洲欧美一区二区原创| 91免费看片在线观看| 91网页版在线| 亚洲一区二区三区涩| 最新国产成人在线观看| 在线国产精品一区| 图片区小说区区亚洲影院| 91精品国产一区二区三区蜜臀| 欧美午夜在线视频| 久久99国产精品久久| 亚洲色图欧美在线| 日韩一级高清毛片| 久久久久久久久久码影片| 欧美一区亚洲二区| 国产一区二区三区四区老人| 热久久久久久久| 亚洲视频一二三区| 精品国产精品一区二区夜夜嗨| 久久久噜噜噜| 亚洲精品国产精品国自产观看| 日韩情涩欧美日韩视频| 亚洲综合小说图片| 日本精品视频一区二区三区| 国精品一区二区三区| 成人手机在线视频| 蜜臀久久99精品久久久久宅男| 亚洲色图制服诱惑| 国产日本欧洲亚洲| 日韩三级在线免费观看| 久久精品在线| 99人久久精品视频最新地址| 欧美一区二区三区另类 | 欧美综合亚洲图片综合区| 亚洲精品日韩久久| 国产精品v欧美精品v日本精品动漫 | 91精品欧美久久久久久动漫| 久久久福利视频| 国产日产高清欧美一区二区三区| 色综合欧美在线| 91免费看片在线观看| 99精品1区2区| 波多野结衣亚洲| 岛国精品在线观看| 国产不卡视频在线播放| 国内精品久久久久影院一蜜桃| 日韩电影一二三区| 青青国产91久久久久久| 香蕉成人啪国产精品视频综合网 | 欧美三级韩国三级日本一级| 色综合久久天天| 一本一本大道香蕉久在线精品 | 国产a区久久久| 国产成都精品91一区二区三| 国产一区啦啦啦在线观看| 麻豆免费精品视频| 精久久久久久久久久久| 久久国内精品自在自线400部| 免费成人小视频| 日韩和欧美的一区| 美日韩一级片在线观看| 久久99在线观看| 国产成人午夜99999| 懂色av一区二区在线播放| 粉嫩嫩av羞羞动漫久久久| 粗大黑人巨茎大战欧美成人| 不卡的av电影在线观看| 色综合中文字幕| 国产精品a久久久久| 亚洲美女色禁图| 蜜桃av噜噜一区二区三区| 色婷婷av一区二区三区大白胸 | 不卡av在线免费观看| 欧美连裤袜在线视频| 亚洲人成人一区二区三区| 国产欧美成人| 一本色道久久加勒比精品| 欧美日韩免费一区二区三区视频| 8x福利精品第一导航| 久久亚洲影视婷婷| 国产精品毛片无遮挡高清| 亚洲综合小说图片| 蜜臀久久99精品久久久久久9| 国产成人亚洲综合a∨婷婷图片| 99国产精品国产精品久久| 欧美日韩国产成人精品| 亚洲在线不卡|