欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

flutter體積,fluent體積

Flutter Android端集成排坑 - armeabi 適配 & FlutterBoost

Flutter可以算是當(dāng)下最火熱的新技術(shù)之一,我現(xiàn)在所在團(tuán)隊(duì)也準(zhǔn)備將Flutter技術(shù)應(yīng)用到線上工程中。

成都創(chuàng)新互聯(lián)公司公司2013年成立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢想脫穎而出為使命,1280元湖南做網(wǎng)站,已為上家服務(wù),為湖南各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:13518219792

關(guān)于混合工程,官方文檔其實(shí)寫的已經(jīng)比較清楚了,按著文檔走一般問題不大,

但是有一點(diǎn)值得注意的是,F(xiàn)lutter工程引入的庫的gradle的 buildTypes 要與原工程保持一致,如果不一致需要手工添加。

進(jìn)入正題,現(xiàn)在Flutter官方默認(rèn)只提供armeabi-v7a、arm64-v8a、x86和x86-64,其中x86和x86-64是為模擬器準(zhǔn)備的。目前我們使用的SDK大部分只使用了armeabi架構(gòu),直接使用我們會(huì)遇見找不到 libflutter.so,libapp.so 的情況,所以我們需要對(duì)FlutterSDK做一定的改造。

首先我們要了解下Flutter編譯產(chǎn)物,因?yàn)椴煌姹井a(chǎn)物是不同的,這里我們只針對(duì)Flutter 1.9.1-hotfixes來說。除了資源文件之外,F(xiàn)lutter打包會(huì)生成兩個(gè)非常重要的so庫,他們分別是 libflutter.so,libapp.so 。其中 libflutter.so 是Flutter的SDK產(chǎn)物而 libapp.so 正是我們編寫的dart文件的產(chǎn)物。默認(rèn)情況下,這兩個(gè)文件都會(huì)出現(xiàn)在armeabi-v7a中,因此我們要作出對(duì)應(yīng)的改造。

libflutter.so 位于FlutterSDK中,這里順帶提一句,除了這對(duì)不同CPU架構(gòu),它還分為Debug版和Release版,它們的區(qū)別在于Debug是為JIT編譯方式打造的,體積較大而Release是為AOT編譯方式打造的,體積很小。對(duì) libflutter.so 的改造,只要將其移動(dòng)文件路徑即可,運(yùn)行以下腳本即可,此腳本來自美團(tuán)分享的Flutter文章。

移動(dòng)完了 libflutter.so 之后我們打包發(fā)現(xiàn), libapp.so 仍然會(huì)出現(xiàn)在armeabi-v7a中,所以第二部我們就是移動(dòng) libapp.so 。這個(gè)需要更改 flutter.gradle ,我們在 flutter.gradle 的45行可以看到如下定義,它定義了我們的環(huán)境。

在524行我們可以看到,abiValue的取值就是根據(jù)上述定義值。

所以結(jié)論很簡單,只要將

private static final String ARCH_ARM32 = "armeabi-v7a";

改為

private static final String ARCH_ARM32 = "armeabi";

就可以完成對(duì)與 libflutter.so 的移動(dòng)。

前期工作我們都做好了,打成aar就非常簡單了

直接使用 flutter build aar --target-platform android-arm

打出來后可以解壓檢查下 libflutter.so,libapp.so 是否都在armeabi文件夾下即可。

說完了armeabi適配問題,這里下說下有關(guān)于有關(guān)于FlutterBoost的接入。這個(gè)東西接入有兩點(diǎn)要注意。

在主app內(nèi)加上即可,常規(guī)操作,強(qiáng)制統(tǒng)一support包的版本號(hào)

注釋flutter.gradle第655行。因?yàn)榫幾g過程中,會(huì)去初始化插件項(xiàng)目的buildType下面的debug配置,而插件項(xiàng)目下并未配置debug,導(dǎo)致報(bào)錯(cuò)。

如果發(fā)現(xiàn)文章中有錯(cuò)誤或者有更好的解決方案歡迎指正留言,當(dāng)然如果本篇文章幫助你解決了問題,也不要吝嗇你的感謝。謝謝各位。

flutter 常見問題之a(chǎn)pp體積為何比較大

細(xì)心的開發(fā)者會(huì)發(fā)現(xiàn)flutter構(gòu)建的App體積比native的大一些,是什么原因造成App體積大呢?

其實(shí)flutter 在release時(shí)App體積和native的大小差不多,而debug時(shí)體積通常會(huì)大。debug版本體積較大是為了Hot reload和快速編譯。如果有flutter開發(fā)經(jīng)驗(yàn)的朋友都體驗(yàn)過,如果您修改一下App的背景顏色,只需save一下就可以立刻看到修改后效果。我稱之為“像藝術(shù)家一樣在創(chuàng)造App”,因此為了實(shí)現(xiàn)這些目標(biāo),提高開發(fā)的效率,debug將占用全部資源。而當(dāng)我們構(gòu)建release版時(shí),flutter又會(huì)采用AOT策略,提高App運(yùn)行效率,release版只打包必需的資源,因而體積又會(huì)減少。

另外,flutter團(tuán)隊(duì)也一直在尋找減小程序大小的方法。

Flutter小部件之圖片(Image)和圖標(biāo)(Icon)

在Flutter中,我們可以使用Image控件來顯示圖片,一般來講我們的圖片資源都來源于網(wǎng)絡(luò)或者本地圖片。

Flutter中的Image也是類似。

我們先來看看Image的構(gòu)造方法

下面我們來看看其常用的屬性

可以看到,其常用屬性跟前端中的css很像。

下面我們來簡單用一用Image控件

首先是必填參數(shù)image,它接收一個(gè)ImageProvider類型的值。ImageProvider是一個(gè)抽象類,他下面有下圖這些實(shí)現(xiàn)類,由下面這些實(shí)現(xiàn)類可以看出,image是可以從資源,內(nèi)存,網(wǎng)絡(luò),和文件中獲取圖片。

我們先來試試加載網(wǎng)絡(luò)圖片

首先看看NetworkImage構(gòu)造方法,很簡單,傳個(gè)url就可以了

如下:

嗯,就是這么簡單。其他3種情況使用也是類似的,自行看源碼即可。

實(shí)際上,F(xiàn)lutter給我們提供了擴(kuò)展方法,使用起來更加簡單,通常我們直接使用提供的擴(kuò)展方法即可

如下

可以看到,他們的構(gòu)造方法基本類似。

所以我們也可以這樣寫,跟上面的效果是一致的。

大致分為一下幾步

1.創(chuàng)建一個(gè)文件夾,用于存放圖片,如圖,我創(chuàng)建了一個(gè)imgs的文件夾,放了一張圖片

2.在pubspec.yaml中聲明資源,注意聲明的時(shí)候路徑和前面的-是有間隔的,不然的話會(huì)報(bào)#/properties/flutter/properties/assets: type: wanted [array] got -imgs/code.png

類似的錯(cuò)誤,聲明完成后點(diǎn)擊右上方的packages get

下面我們再來看看其他屬性。

width,height

寬高沒什么好說的,就是設(shè)置寬度和高度

配合color使用,用于設(shè)置顏色的混合模式。BlendMode是一個(gè)枚舉,他有很多值

詳細(xì)解析還是看官方文檔吧,值太多了,我們隨便用用

用于設(shè)置圖片的填充方式,當(dāng)圖片本身小于設(shè)置的寬高或者比父控件的寬高小時(shí),我們可以設(shè)置該屬性控制圖片的顯示。

其值的類型是BoxFit。是個(gè)枚舉

具體含義還是直接看文檔即可

設(shè)置圖片的對(duì)齊方式,接收一個(gè)Alignment類型的值,值如下,很好理解

為了方便看效果我們在外邊套了個(gè)Container,簡單的把它理解為一個(gè)容器布局就可以了,類似于html中的div或android中的Layout,我們給Container設(shè)置了寬高和背景顏色。

bottomLeft效果如下,其他的自行嘗試

相對(duì)于Image,ICON可以像web一樣使用字體圖標(biāo),并且可以使用矢量圖,無需擔(dān)心失真的問題,并且體積相對(duì)較小。

我們先來看看其構(gòu)造方法

很簡單,我們直接來用一用

默認(rèn)情況下,pubspec.yaml中uses-material-design的值為true.我們默認(rèn)就可以使用Material Design字體圖標(biāo)

那么多ui框架怎么選

LayUI

由職業(yè)前端傾情打造,面向全層次的前后端開發(fā)者,低門檻開箱即用的前端 UI 解決方案,layui是一個(gè)采用自身模塊規(guī)范化編寫的前端UI框架,它依照原生HTML/CSS/JS的書寫與組織形式,入門簡單,使用也非常簡單。從核心代碼到API的每一處細(xì)節(jié)都經(jīng)過精心雕琢,非常適合界面的快速開發(fā)。

JEUI

它是一款國產(chǎn)前端UI框架,遵循原生HTML/CSS/JS的書寫與組織形式,國內(nèi)很多程序員javascript不熟, 大大影響了開發(fā)速度. 因此JEUI不需要開發(fā)人員去關(guān)心javascript怎么寫, 只要寫標(biāo)準(zhǔn)html就可以了,門檻極低,拿來即用。其外在極簡,卻又不失飽滿的內(nèi)在,體積輕盈,組件豐盈,從核心代碼到API的每一處細(xì)節(jié)都經(jīng)過精心雕琢,非常適合界面的快速開發(fā)。

JEUI基于jQuery的UI框架,包括表單、布局、表格等等常用UI控件,使用JEUI可以快速輕松地創(chuàng)建風(fēng)格統(tǒng)一的界面效果。

瀏覽器兼容非常牛皮,能兼容IE8以上的瀏覽器。

DWZ

DWZ富客戶端框架(jQuery RIA framework), 是中國人自己開發(fā)的基于jQuery實(shí)現(xiàn)的Ajax RIA開源框架. 設(shè)計(jì)目標(biāo)是簡單實(shí)用,快速開發(fā),降低ajax開發(fā)成本。

DWZ 支持用 html 擴(kuò)展的方式來代替 javascript 代碼, 基本可以保證程序員不董 javascript, 也能使用各種頁面組件和 ajax 技術(shù). 如果有特定需求也可以擴(kuò)展 DWZ 做定制化開化.

MDUI

MDUI 是一個(gè)基于 Material Design 的前端框架。

19 種主色、16 種強(qiáng)調(diào)色、1 種夜間主題,只需添加一個(gè) CSS 類即可切換。CSS 僅 26.7KB,JavaScript 僅 14KB,加載更迅速。移動(dòng)優(yōu)先,從小屏逐步擴(kuò)展到大屏,最終實(shí)現(xiàn)所有屏幕適配。不依賴任何第三方庫,節(jié)約網(wǎng)絡(luò)流量,使加載更迅速,提高用戶體驗(yàn)。使用 CSS3 來做動(dòng)畫交互,平滑、高效,讓 Web 應(yīng)用的動(dòng)畫更流暢。提供自定義打包功能,按需打包需要的主題和組件,使文件體積驟然減小。MDUI 包含了 20 余個(gè)組件,且每個(gè)組件都可以適應(yīng)不同主題。

只需懂一點(diǎn) HTML、CSS、JS 的基礎(chǔ)知識(shí),就能使用 MDUI。

ElementUI

element ui框架的按鈕組件,這款由餓了么前端開源的UI框架,一經(jīng)面世,就收獲大量程序員的芳心,在github 上更是高達(dá)29.8k的star早已說明一切,用于開發(fā)PC端的頁面還是綽綽有余的,如果說你是用vue開發(fā)者,卻沒用過element UI,那你肯定不是合格的vue開發(fā)者。

WeUI

jQuery WeUI 是專為微信公眾賬號(hào)開發(fā)而設(shè)計(jì)的一個(gè)簡潔而強(qiáng)大的UI庫,包含全部WeUI官方的CSS組件,并且額外提供了大量的拓展組件,豐富的組件庫可以極大減少前端開發(fā)時(shí)間。

jQuery WeUI 的最大特點(diǎn)是它只提供UI組件,并不會(huì)對(duì)項(xiàng)目所使用的框架和其他庫有任何的限制,幾乎可以在任何環(huán)境下使用。無論你的項(xiàng)目是基于jQuery,還是 React, Angular, Vue, 你都會(huì)發(fā)現(xiàn) jQuery WeUI 能非常方便的和他們結(jié)合使用。既是你的項(xiàng)目是一個(gè)有很悠久歷史的老項(xiàng)目,也幾乎可以做到拿來即用。

Flutter

Flutter是谷歌的移動(dòng)UI框架,可以快速在iOS和Android上構(gòu)建高質(zhì)量的原生用戶界面,前端對(duì)于 Flutter 的熱忱度之高一度讓人有點(diǎn)驚訝,事實(shí)上在 Flutter 社區(qū)內(nèi)見到的客戶端開發(fā)者遠(yuǎn)多于前端開發(fā),不過前端對(duì)于跨端解決方案確實(shí)有著天然的渴求。

Flutter可以與現(xiàn)有的代碼一起工作。在全世界,F(xiàn)lutter正在被越來越多的開發(fā)者和組織使用,并且Flutter是完全免費(fèi)、開源的。

iView ui

iViewui一套基于 Vue.js 的高質(zhì)量 UI 組件庫,搭配使用 iView UI 組件庫形成的一套后臺(tái)集成解決方案,由 TalkingData 前端可視化團(tuán)隊(duì)部分成員開發(fā)維護(hù)。iView Admin 遵守 iView 設(shè)計(jì)和開發(fā)約定,風(fēng)格統(tǒng)一。

Mint UI

Mint UI 包含豐富的 CSS 和 JS 組件,能夠滿足日常的移動(dòng)端開發(fā)需要。通過它,可以快速構(gòu)建出風(fēng)格統(tǒng)一的頁面,提升開發(fā)效率。

真正意義上的按需加載組件。可以只加載聲明過的組件及其樣式文件,無需再糾結(jié)文件體積過大。

考慮到移動(dòng)端的性能門檻,Mint UI 采用 CSS3 處理各種動(dòng)效,避免瀏覽器進(jìn)行不必要的重繪和重排,從而使用戶獲得流暢順滑的體驗(yàn)。

依托 Vue.js 高效的組件化方案,Mint UI 做到了輕量化。即使全部引入,壓縮后的文件體積也僅有 ~30kb (JS + CSS) gzip。

YDUI Touch

YDUI Touch 專為移動(dòng)端打造,在技術(shù)實(shí)現(xiàn)、交互設(shè)計(jì)上兼容主流移動(dòng)設(shè)備,保證代碼輕、性能高。

使用 Flex 技術(shù),靈活自如地對(duì)齊、收縮、擴(kuò)展元素,輕松搞定移動(dòng)頁面布局。

實(shí)現(xiàn)強(qiáng)大的屏幕適配布局,等比例適配所有屏幕。什么?用得不開心?輕松切換 px。

自定義Javascript組件、Less文件、Less變量,定制一份屬于自己的YDUI。

SUI Mobile

SUI Mobile 是一套基于 Framework7 開發(fā)的UI庫。它非常輕量、精美,只需要引入我們的CDN文件就可以使用,并且能兼容到 iOS 6.0+ 和 Android 4.0+,非常適合開發(fā)跨平臺(tái)Web App。輕量的UI庫

SUI Mobile 非常輕量,核心庫壓縮Gzip后的JS、CSS網(wǎng)絡(luò)傳輸體積總共只有52K,卻提供了20+個(gè)常用的組件。

Amaze ~ 妹子 UI

中國首個(gè)開源 HTML5 跨屏前端框架

Amaze UI 以移動(dòng)優(yōu)先(Mobile first)為理念,從小屏逐步擴(kuò)展到大屏,最終實(shí)現(xiàn)所有屏幕適配,適應(yīng)移動(dòng)互聯(lián)潮流。

Amaze UI 含近 20 個(gè) CSS 組件、20 余 JS 組件,更有多個(gè)包含不同主題的 Web 組件,可快速構(gòu)建界面出色、體驗(yàn)優(yōu)秀的跨屏頁面,大幅提升開發(fā)效率。

相比國外框架,Amaze UI 關(guān)注中文排版,根據(jù)用戶代理調(diào)整字體,實(shí)現(xiàn)更好的中文排版效果;兼顧國內(nèi)主流瀏覽器及 App 內(nèi)置瀏覽器兼容支持。

Amaze UI 面向 HTML5 開發(fā),使用 CSS3 來做動(dòng)畫交互,平滑、高效,更適合移動(dòng)設(shè)備,讓 Web 應(yīng)用更快速載入。

cube-ui

質(zhì)量可靠:由滴滴內(nèi)部組件庫精簡提煉而來,歷經(jīng)考驗(yàn),并且每個(gè)組件都有充分單元測試,為后續(xù)集成提供保障。

體驗(yàn)極致:以迅速響應(yīng)、動(dòng)畫流暢、接近原生為目標(biāo),在交互體驗(yàn)方面追求極致。

標(biāo)準(zhǔn)規(guī)范:遵循統(tǒng)一的設(shè)計(jì)交互標(biāo)準(zhǔn),高度還原設(shè)計(jì)效果;接口標(biāo)準(zhǔn)化,統(tǒng)一規(guī)范使用方式,開發(fā)更加簡單高效。

擴(kuò)展性強(qiáng):支持按需引入和后編譯,輕量靈活;擴(kuò)展性強(qiáng),可以方便地基于現(xiàn)有組件實(shí)現(xiàn)二次開發(fā)。

flutter引入第三方插件報(bào)錯(cuò)xxx-Swift.h file not found解決辦法及原因

問題算是解決了,但是為什么會(huì)這樣呢,我們習(xí)以為常的use_frameworks!有什么作用呢,知其然也要知其所以然,帶著疑問我進(jìn)行了下一步的探索 。

首先我們要了解下靜態(tài)庫和動(dòng)態(tài)庫還有Framework。

靜態(tài)庫:(.a)在編譯時(shí)會(huì)將庫copy一份到目標(biāo)程序中,編譯完成之后,目標(biāo)程序不依賴外部的庫,也可以運(yùn)行。缺點(diǎn): 會(huì)使應(yīng)用程序變大。

動(dòng)態(tài)庫:(.dylib)編譯時(shí)只存儲(chǔ)了指向動(dòng)態(tài)庫的引用。可以多個(gè)程序指向這個(gè)庫,在運(yùn)行時(shí)才加載,不會(huì)使應(yīng)用體積變大,但是運(yùn)行時(shí)加載會(huì)損耗部分性能,并且依賴外部的環(huán)境,如果庫不存在或者版本不正確則無法運(yùn)行(我的項(xiàng)目無法運(yùn)行就是這一步出問題了)。

Framework:實(shí)際上是一種打包方式,將庫的二進(jìn)制文件,頭文件和有關(guān)的資源文件打包到一起,方便管理和分發(fā)。

CocoaPods 通過use_frameworks來控制是否是用Framework。

如果不使用use_frameworks!則會(huì)使用static libraries 方式生成.a文件。

如果使用use_frameworks!則會(huì)使用dynamic frameworks 方式生成.framework文件。

在純oc的項(xiàng)目中,一般不使用frameworks,但是在pod導(dǎo)入的swift項(xiàng)目,必須要使用use_frameworks!,我這個(gè)flutter項(xiàng)目也是用pod導(dǎo)入的第三方庫,所以必須加入use_frameworks!,特此記錄下,免得以后踩同樣的坑!

Flutter動(dòng)態(tài)化方案調(diào)研

騰訊課堂14M

今日頭條3M

閑魚22M

百度貼吧13M

螞蟻財(cái)富56.8M

百度網(wǎng)盤14M

手機(jī)淘寶15M

貝殼找房8M

由粗粒度小組件動(dòng)態(tài)拼裝出頁面,Native端已經(jīng)有很多成熟的框架,如天貓的Tangram。

開發(fā)語言:iOS、Android

適用場景:快速迭代的活動(dòng)營銷頁面

優(yōu)點(diǎn):無侵入,更新簡單

缺點(diǎn):提前預(yù)埋,擴(kuò)展性差,靈活性差

以webview作為容器的app,歷史悠久,最早到2011年。

開發(fā)語言:HTML

適用場景:雙端嚴(yán)格一致的銀行類app,容器類的支付寶小程序等

優(yōu)點(diǎn):動(dòng)態(tài)更新,跨平臺(tái)

缺點(diǎn):性能,加載速度

UI用Xml+JS表達(dá),用Native View渲染。

開發(fā)語言:Xml+JS

適用場景:雙端嚴(yán)格一致的銀行類app,容器類的支付寶小程序等

優(yōu)點(diǎn):native組件,生態(tài)成熟

缺點(diǎn):三方庫crash,性能缺陷

UI用Dart表達(dá),用Dart engine渲染。

Flutter官方不支持動(dòng)態(tài)化。原因是Flutter在 Release 模式下構(gòu)建的是 AOT 編譯產(chǎn)物,在 Debug 模式下構(gòu)建的是 JIT ,AOT 依賴的 Dart VM 和 JIT 并不一樣, JIT Release 并不支持 iOS 設(shè)備。可行的方案是:AOT 需要一個(gè)編譯后的 “Dart VM”。抽離一份 DartVM 獨(dú)立編譯,再以動(dòng)態(tài)庫的形式引入項(xiàng)目。

開發(fā)語言:Dart

適用場景:iOS、Android、Web、Desktop、Embed

優(yōu)點(diǎn):性能最佳

缺點(diǎn):增大包體積 20MB+

大廠的主流方案。UI用JS表達(dá),用Dart engine渲染。

開發(fā)語言:JS、類JS

適用場景:iOS、Android

優(yōu)點(diǎn):性能最佳

缺點(diǎn):需要掌握J(rèn)S、Dart兩個(gè)語言和框架

大廠的主流方案。UI用Dart表達(dá),用Dart engineX渲染。

開發(fā)語言:Dart

適用場景:iOS、Android

優(yōu)點(diǎn):性能最佳

缺點(diǎn):需要改造Dart engine

1、 美團(tuán)外賣Flutter動(dòng)態(tài)化實(shí)踐

2、 攜程App 首頁動(dòng)態(tài)化探索

3、 Flutter 動(dòng)態(tài)化在最右 App 中的實(shí)踐

4、 Flutter 動(dòng)態(tài)化熱更新的思考與實(shí)踐

5、 NOW直播Flutter動(dòng)態(tài)搜索列表頁實(shí)現(xiàn)

6、 Flutter動(dòng)態(tài)化的方案對(duì)比及最佳實(shí)現(xiàn)-閑魚

7、 基于JavaScript 的MXFlutter

網(wǎng)站欄目:flutter體積,fluent體積
分享網(wǎng)址:http://chinadenli.net/article36/dsgedsg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號(hào)Google網(wǎng)站維護(hù)手機(jī)網(wǎng)站建設(shè)品牌網(wǎng)站建設(shè)動(dòng)態(tài)網(wǎng)站

廣告

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

手機(jī)網(wǎng)站建設(shè)