1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時(shí)間:8:30-17:00
      你可能遇到了下面的問(wèn)題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
      互聯(lián)網(wǎng)首發(fā)|閑魚(yú)程序員公開(kāi)多年Flutter實(shí)踐經(jīng)驗(yàn)-創(chuàng)新互聯(lián)

      導(dǎo)讀:Flutter從誕生到現(xiàn)在,已經(jīng)成為了跨端開(kāi)發(fā)的領(lǐng)跑者。閑魚(yú)應(yīng)用在flutter能夠以模塊形式存在前,進(jìn)行了很長(zhǎng)時(shí)間的混合app架構(gòu)的探索,對(duì)原生工程進(jìn)行較多改動(dòng),在官方推出flutter模塊模式后,我們進(jìn)行了大量調(diào)研,最終推出了一套開(kāi)箱即用的混合工程腳手架flutter-boot,幫助大家快速搭建混合工程。

      在蘄春等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供網(wǎng)站建設(shè)、成都網(wǎng)站建設(shè) 網(wǎng)站設(shè)計(jì)制作按需規(guī)劃網(wǎng)站,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站建設(shè),營(yíng)銷(xiāo)型網(wǎng)站建設(shè),外貿(mào)營(yíng)銷(xiāo)網(wǎng)站建設(shè),蘄春網(wǎng)站建設(shè)費(fèi)用合理。

      背景

      國(guó)內(nèi)外越來(lái)越多的公司走上了flutter探索之路。Flutter的主要開(kāi)發(fā)模式分成兩種,一種是獨(dú)立app的模式,以flutter為主,原生工程會(huì)被包含在flutter工程下;另一種是讓flutter以模塊(flutter module)的形式存在,分別集成在已有的iOS和android原生應(yīng)用下,此時(shí)原生工程可以在任何的目錄結(jié)構(gòu)下,和flutter工程地址不產(chǎn)生關(guān)聯(lián),但需要在原生工程結(jié)構(gòu)中聲明flutter工程的本地地址。
      如何下載
      鏈接:https://pan.baidu.com/s/16qZ1k_KPrael4RX6Y1NlLA
      提取碼:y8uy

      簡(jiǎn)介

      flutter-boot核心解決了混合開(kāi)發(fā)模式下的兩個(gè)問(wèn)題:flutter混合開(kāi)發(fā)的工程化設(shè)計(jì)和混合棧。那flutter-boot是如何解決的呢?

      首先在工程化設(shè)計(jì)的問(wèn)題上,flutter-boot建立了一套標(biāo)準(zhǔn)的工程創(chuàng)建流程和友好的交互命令,當(dāng)流程執(zhí)行完成后,即擁有了混合開(kāi)發(fā)的標(biāo)準(zhǔn)工程結(jié)構(gòu),這一套工程結(jié)構(gòu)能夠幫助我們同時(shí)擁有flutter和native(原生)兩種開(kāi)發(fā)視角,本地flutter開(kāi)發(fā)和云端flutter構(gòu)建兩種flutter集成模式,其效果如圖:互聯(lián)網(wǎng)首發(fā) | 閑魚(yú)程序員公開(kāi)多年 Flutter 實(shí)踐經(jīng)驗(yàn)
      另外在混合棧的問(wèn)題上,flutter-boot能自動(dòng)注入混合棧依賴,同時(shí)將核心的混合棧接入代碼封裝后注入到原生工程內(nèi),在用戶按提示插入簡(jiǎn)單幾行模版代碼后,即可看到混合棧的效果。 使用flutter-boot搭建的混合工程,開(kāi)箱即可使用,接下來(lái)讓我們了解下flutter-boot解決這些問(wèn)題的詳細(xì)過(guò)程。

      開(kāi)源地址

      https://github.com/alibaba-flutter/flutter-boot

      工程化設(shè)計(jì)

      了解官方的Add Flutter to existing apps項(xiàng)目

      在了解flutter-boot的工程化設(shè)計(jì)細(xì)節(jié)前,我們需要對(duì)Google官方提供的Add Flutter to existing apps方案有一個(gè)初步的了解。Add Flutter to existing apps項(xiàng)目會(huì)引導(dǎo)我們以module的形式創(chuàng)建flutter,module形態(tài)的flutter的工程結(jié)構(gòu)如下:互聯(lián)網(wǎng)首發(fā) | 閑魚(yú)程序員公開(kāi)多年 Flutter 實(shí)踐經(jīng)驗(yàn)
      在官方的工程結(jié)構(gòu)下,.ios和.android是運(yùn)行flutter時(shí)的模版工程,在flutter工程目錄下運(yùn)行時(shí)即通過(guò)這兩個(gè)工程來(lái)啟動(dòng)應(yīng)用。那我們?nèi)绾巫屧こ毯彤a(chǎn)生關(guān)聯(lián)呢?這里的關(guān)聯(lián)會(huì)分成三個(gè)部分,分別是flutter的framework,flutter的業(yè)務(wù)代碼,和flutter的插件庫(kù)。其中flutter插件庫(kù)分成 flutter plugin native(即插件原生代碼)和flutter plugin dart(即插件的dart代碼)兩個(gè)部分。這四部分的差異在于:互聯(lián)網(wǎng)首發(fā) | 閑魚(yú)程序員公開(kāi)多年 Flutter 實(shí)踐經(jīng)驗(yàn)
      因此flutter framework只需要在依賴管理中聲明即可,flutter plugin native可以直接以源碼的方式集成,flutter plugin dart只有在被業(yè)務(wù)代碼引用時(shí)才有效,因此和業(yè)務(wù)代碼一樣,需要支持dart代碼的調(diào)試模式和發(fā)布模式,因此dart代碼的關(guān)聯(lián)會(huì)侵入到app的構(gòu)建環(huán)節(jié),根據(jù)app構(gòu)建的模式來(lái)決定dart代碼的構(gòu)建模式。

      具體的實(shí)現(xiàn),拿iOS來(lái)舉例,我們會(huì)在podfile文件中增加一個(gè)自定義的ruby腳本podfilehelper的調(diào)用,podfilehelper會(huì)聲明flutter framework的依賴,聲明flutter plugin native的源碼引用,同時(shí)聲明業(yè)務(wù)代碼的路徑。接下來(lái)會(huì)介入構(gòu)建流程,在xcode的build phase內(nèi)加入shell腳本xcode_backend的調(diào)用,xcode_backend會(huì)根據(jù)當(dāng)前構(gòu)建模式,來(lái)產(chǎn)出dart構(gòu)建產(chǎn)物。

      flutter-boot的補(bǔ)充

      對(duì)于官方的混合工程項(xiàng)目,我們?cè)隗w驗(yàn)后發(fā)現(xiàn)有如下的問(wèn)題:

      文件或配置的添加為手動(dòng)添加,流程較長(zhǎng)。

      不支持在flutter倉(cāng)庫(kù)下運(yùn)行原生工程。

      不支持flutter以獨(dú)立代碼倉(cāng)庫(kù)部署時(shí)的遠(yuǎn)端機(jī)器構(gòu)建。

      因此在flutter-boot腳手架中,為了解決這些問(wèn)題,我們把混合工程的部署分為create,link,remotelink,update四個(gè)過(guò)程。

      ★ create

      create過(guò)程目的在于幫助我們搭建一個(gè)flutter module,包括flutter module的創(chuàng)建和git倉(cāng)庫(kù)的部署,flutter module創(chuàng)建命令調(diào)用前,我們會(huì)做基礎(chǔ)的檢查來(lái)讓工程位置和命名的規(guī)范滿足官方的條件。在git倉(cāng)庫(kù)部署時(shí),我們會(huì)在gitignore中忽略部分文件,同時(shí)我們會(huì)對(duì)倉(cāng)庫(kù)的狀態(tài)進(jìn)行檢查,在倉(cāng)庫(kù)為空時(shí),直接添加文件,在倉(cāng)庫(kù)非空時(shí),會(huì)優(yōu)先清理倉(cāng)庫(kù)。

      ★ link

      link過(guò)程目的在于關(guān)聯(lián)本地的原生工程和flutter工程。關(guān)聯(lián)的過(guò)程中,我們會(huì)先請(qǐng)求獲取flutter工程的地址和原生工程的地址,然后我們將上面提到的需要手動(dòng)集成的部分通過(guò)腳本的方式自動(dòng)集成;為了獲得flutter開(kāi)發(fā)視角(即flutter工程下運(yùn)行原生工程),我們將原生工程進(jìn)行了軟鏈接,鏈接到flutter工程的ios目錄和android目錄,flutter在運(yùn)行前會(huì)找到工程下的ios或android目錄然后運(yùn)行,在flutter工程下運(yùn)行iOS工程會(huì)存在一個(gè)限制,即iOS工程的target需要指定為runner,為了解決這個(gè)問(wèn)題,我們將原生工程的主target進(jìn)行了復(fù)制,復(fù)制了一份名為runner的target。

      同時(shí),為了支持遠(yuǎn)程構(gòu)建的模式,我們flutter倉(cāng)庫(kù)本地路徑的聲明根據(jù)構(gòu)建模式進(jìn)行了區(qū)分,封裝在自定義的依賴腳本中,例如在iOS工程內(nèi),我們會(huì)添加fbpodhelper.rb腳本文件。然后將flutter倉(cāng)庫(kù)本地路徑添加到了配置文件fbConfig.local.json中。

      ★ remotelink

      update remotelink過(guò)程目的在于遠(yuǎn)端構(gòu)建模式下,能夠獲取flutter倉(cāng)庫(kù)的代碼,并在遠(yuǎn)端機(jī)器上進(jìn)行構(gòu)建。在遠(yuǎn)端構(gòu)建模式下,我們會(huì)侵入依賴管理的過(guò)程,在依賴獲取時(shí),拉取flutter倉(cāng)庫(kù)的代碼,將代碼放置在原生工程的.fbflutter目錄下,并將該目錄聲明為flutter倉(cāng)庫(kù)本地路徑,拉取flutter代碼并進(jìn)行本地部署的過(guò)程,我們稱之為update過(guò)程。

      這樣在遠(yuǎn)端構(gòu)建時(shí)就能和本地構(gòu)建如出一轍。 那遠(yuǎn)端模式和本地模式如何區(qū)分呢?為了區(qū)分遠(yuǎn)端模式與本地模式,我們將遠(yuǎn)端的flutter倉(cāng)庫(kù)信息記錄在fbConfig.json,同時(shí)在gitignore中忽略fbConfig.local.json文件,這樣只需要初始化混合工程的工程師運(yùn)行一次remotelink,其他的開(kāi)發(fā)協(xié)同者將不用關(guān)注遠(yuǎn)端構(gòu)建的配置流程。

      ★ init

      為了方便快速搭建,我們提供了一個(gè)命令集合,命名為init,我們將必備的環(huán)節(jié)以命令行交互的模式集成在了init命令中。

      混合棧

      混合棧是閑魚(yú)開(kāi)源的一套用于flutter混合工程下協(xié)調(diào)原生頁(yè)面與flutter頁(yè)面交互的框架,目前是混合開(kāi)發(fā)模式下的主流框架。在混合棧開(kāi)源后,我們關(guān)注到大量開(kāi)發(fā)者在集成混合棧時(shí)會(huì)產(chǎn)生各種環(huán)境配置或代碼添加導(dǎo)致的集成問(wèn)題。因此我們決定提供一套快速集成的方案。要做到快速集成我們面臨兩個(gè)問(wèn)題:

      flutter和混合棧的版本兼容;

      混合棧demo代碼封裝及插入。

      版本兼容問(wèn)題

      目前混合棧發(fā)布版本為0.1.52,支持flutter 1.5.4。當(dāng)flutter升級(jí)時(shí)混合棧勢(shì)必要進(jìn)行適配,即我們集成的混合棧版本也需要變更。因此我們將混合棧的版本配置通過(guò)文件進(jìn)行維護(hù),記錄當(dāng)前flutter所需要的混合棧版本。在初版的flutter-boot中,我們限定了混合棧的版本號(hào),在新版本混合棧發(fā)布時(shí),我們將開(kāi)放版本選擇的功能。

      代碼封裝及插入問(wèn)題

      在調(diào)研了混合棧的使用過(guò)程后,我們將混合棧需要的demo代碼分成了四個(gè)部分:

      flutter引擎的托管;

      頁(yè)面路由的配置 ;

      demo形式的dart頁(yè)面 ;

      原生的測(cè)試跳轉(zhuǎn)入口。

      ★ flutter引擎的托管

      引擎的托管我們依賴于應(yīng)用的初始化,由于初始化過(guò)程隨著應(yīng)用的復(fù)雜程度提升而提升,因此目前我們提供了一行代碼作為接口,使用者在應(yīng)用初始化時(shí)加入這一行代碼即可完成托管。

      ★ 頁(yè)面路由的配置

      demo形式的dart頁(yè)面,路由配置即路由到某個(gè)標(biāo)識(shí)符時(shí),flutter或原生頁(yè)面需要識(shí)別并跳轉(zhuǎn)相應(yīng)頁(yè)面。路由的配置需要在原生和flutter兩側(cè)進(jìn)行部署。在原生側(cè),我們將混合棧的demo路由代碼進(jìn)行了精簡(jiǎn),然后添加在了原生工程的固定目錄下。由于iOS僅添加代碼文件是不會(huì)被納入構(gòu)建范圍的,因此我們封裝了一套iOS側(cè)的代碼添加工具來(lái)實(shí)現(xiàn)文件的插入。在flutter側(cè)我們對(duì)main.dart文件進(jìn)行了覆蓋,將帶有路由邏輯的main.dart集成進(jìn)來(lái),同時(shí)提供了demo dart頁(yè)面的創(chuàng)建邏輯。

      ★ 原生的測(cè)試跳轉(zhuǎn)入口

      為了方便使用者快速看到混合工程的跳轉(zhuǎn)模式,我們?cè)趇OS和android雙端封裝了一個(gè)入口按鈕和按鈕的添加過(guò)程,使用者在測(cè)試的頁(yè)面手動(dòng)加入一行代碼,即可看到跳轉(zhuǎn)flutter的入口。

      效果

      在使用flutter-boot前,開(kāi)發(fā)者可能要花費(fèi)數(shù)天來(lái)進(jìn)行混合工程搭建,現(xiàn)在,使用者只需要調(diào)用一個(gè)命令,加入兩行代碼即可完成混合工程的搭建,大大降低了開(kāi)發(fā)者的開(kāi)發(fā)成本。但flutter-boot的使命還未達(dá)成,我們期望使用者能更加流暢的進(jìn)行flutter開(kāi)發(fā),未來(lái)我們會(huì)優(yōu)化多人協(xié)同的開(kāi)發(fā)流程,完善持續(xù)集成環(huán)境的搭建,讓使用者擁有更佳的開(kāi)發(fā)體驗(yàn)。

      Flutter的深入進(jìn)階教程

      它們包括了如何低成本實(shí)現(xiàn)Flutter富文本、設(shè)計(jì)一個(gè)高準(zhǔn)確率的Flutter埋點(diǎn)框架、Flutter外接紋理、可定制化的Flutter相冊(cè)組件等等深入進(jìn)階內(nèi)容。
      互聯(lián)網(wǎng)首發(fā) | 閑魚(yú)程序員公開(kāi)多年 Flutter 實(shí)踐經(jīng)驗(yàn)
      初始flutter到進(jìn)階實(shí)戰(zhàn)源碼請(qǐng)入圈(也面向全體Android開(kāi)發(fā)人員)
      https://jq.qq.com/?_wv=1027&k=5MQDHG8

      另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。


      文章題目:互聯(lián)網(wǎng)首發(fā)|閑魚(yú)程序員公開(kāi)多年Flutter實(shí)踐經(jīng)驗(yàn)-創(chuàng)新互聯(lián)
      網(wǎng)站鏈接:http://www.ef60e0e.cn/article/dhopjd.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        喀什市| 邵武市| 博爱县| 师宗县| 什邡市| 电白县| 新丰县| 蒙城县| 克什克腾旗| 重庆市| 中山市| 丹阳市| 磐石市| 县级市| 阿拉善右旗| 阿坝| 蒲江县| 建昌县| 夏津县| 忻城县| 长岛县| 寿光市| 高清| 布尔津县| 赤城县| 翼城县| 泽库县| 达孜县| 南雄市| 桃园市| 潮州市| 永宁县| 铁力市| 井陉县| 自治县| 镇安县| 诸暨市| 英吉沙县| 湟中县| 中超| 都兰县|