真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

flutter如何部署,安裝flutter

基于Weex的Flutter項(xiàng)目框架

最近在做的一個(gè)項(xiàng)目,項(xiàng)目的前期采用Weex開發(fā)。但是隨著交互復(fù)雜度的增加,Weex一處開發(fā)多處多處運(yùn)行的特征并沒有很好的體現(xiàn),相反很多時(shí)候我們還是需要做IOS和Android的適配。如今火熱的Flutter相比Weex和Rn來說,給出了更好的跨平臺(tái)解決方案。所以我們?cè)O(shè)計(jì)了一套基于Weex實(shí)現(xiàn),底層跑在Flutter Engine上的框架。

創(chuàng)新互聯(lián)公司是一家專注于做網(wǎng)站、網(wǎng)站制作與策劃設(shè)計(jì),蘇尼特左網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)十余年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:蘇尼特左等地區(qū)。蘇尼特左做網(wǎng)站價(jià)格咨詢:13518219792

底層的Runtime采用isolate engine,框架業(yè)務(wù)邏輯,Dom的解析邏輯和Render邏輯都跑在這里。

渲染引擎采用Flutter的Skia,徹底剝離了Android和IOS的差異性.

將Weex VirsualDom的解析都替換成Flutter Widget.

設(shè)計(jì)基于Weex2Dart的Brider,使JS和Dart可以相互調(diào)用

weex-demo的性能展示

release環(huán)境下采用AOT模式,性能會(huì)有質(zhì)的飛躍。

Android-Release版本只有10m大小

相比Weex和Rn具有更好的性能,同時(shí)具有更好的跨平臺(tái)性

相比Flutter,具有動(dòng)態(tài)部署的能力(Flutter Release采用AoT模式并沒有動(dòng)態(tài)部署的能力,即使Debug版本也只是開發(fā)環(huán)境下才有動(dòng)態(tài)化能力并沒有可以實(shí)施項(xiàng)目的能力)

只需要會(huì)Weex開發(fā)或則Rn開發(fā)就可以,不需要額外學(xué)習(xí)Dart,已有的Weex項(xiàng)目可以無縫切換。

Flutter發(fā)布Package(Pub.dev或私有Pub倉庫)

??因?yàn)槲覀兪褂肍lutter跨平臺(tái)技術(shù)開發(fā)App時(shí),會(huì)有很多公用組件,因?yàn)镕lutter中一切皆為Widget,widget也比較細(xì)粒度,所以我們需要進(jìn)行封裝,用于一個(gè)項(xiàng)目或者公司不同項(xiàng)目中去~

??那么今天寫寫如何發(fā)布package或者插件到Pub.dev上,扯扯談O(∩_∩)O哈哈~

《Flutter的撥云見日》系列文章如下:

1、Flutter中指定字體(全局或者局部,自有字庫或第三方)

2、Flutter發(fā)布Package(Pub.dev或私有Pub倉庫)

首先,我們知道flutter有四種工程模式:Flutter Application、Flutter Module、Flutter Plugin和Flutter Package。

我們這里就主要講Package 純Dart插件的發(fā)布吧,都差不多。

創(chuàng)建工程后,就可以編寫你的公共組件,或者公用字體庫呀啥的, 都行。

在更改下你的pubspec.yaml文件,修改下你的versionCode,項(xiàng)目名稱,項(xiàng)目描述,作者等

如果上傳失敗試試????的命令:

在執(zhí)行該命令時(shí),可能會(huì)中途調(diào)到網(wǎng)頁,要求你登錄google賬號(hào),登錄授權(quán),到時(shí)候登錄賬號(hào)并授權(quán)就可以了。

因?yàn)槲覀冎苯邮褂胒lutter packages pub publish是發(fā)布到Pub.dev上,并不是發(fā)布到私有倉庫,該怎么辦呢?

其實(shí)呢,也很簡(jiǎn)單!像versionCode,項(xiàng)目名,等都和發(fā)布Pub.dev是一樣的。沒啥區(qū)別。

有兩種方式:

就是這么簡(jiǎn)單o( @ )o

相信大家引用Pub.dev上的第三方庫都會(huì)了哈,到處都是這里不講了

在使用flutter pub get就可以拉到私有倉庫項(xiàng)目了

以上就差不多聊了聊package發(fā)布和獲取的事兒了,都很明了,大家可以試試,挺簡(jiǎn)單的。

PS: 寫文不易,覺得沒有浪費(fèi)你時(shí)間,請(qǐng)給個(gè)點(diǎn)贊~ ????

flutter項(xiàng)目使用jenkins自動(dòng)部署

操作系統(tǒng):macOS Big Sur

前置需求:

ok,開始搞jenkins

1、使用homebrew安裝jenkins

Terminal運(yùn)行命令brew install Jenkins

2、運(yùn)行jenkins

Terminal運(yùn)行命令jenkins,最終出現(xiàn) Jenkins is fully up and running代表運(yùn)行成功

3、初始化jenkins

在瀏覽器地址欄輸入

然后首次安裝啟動(dòng)就會(huì)出現(xiàn)新手引導(dǎo),根據(jù)引導(dǎo)操作

自定義jenkins那里選擇安裝推薦的插件

PS:這里我很多插件都安裝失敗了,這個(gè)沒關(guān)系,可以進(jìn)去再自己安裝或者不再安裝貌似也沒啥影響,繼續(xù)向下操作即可

最后的實(shí)例配置那,默認(rèn)即可,也可以設(shè)置一個(gè)地址

PS:如果要設(shè)置的話,就是自己的電腦ip地址+8080端口就行,配置完之后系統(tǒng)管理里報(bào)了一個(gè)反向代理設(shè)置有誤,目前沒發(fā)現(xiàn)這個(gè)報(bào)錯(cuò)有什么不好的影響,這個(gè)地址也可以以后在jenkins系統(tǒng)管理-系統(tǒng)配置里改的,這個(gè)主要是用來讓別的同事來訪問時(shí)要用的,自己用的話就不用設(shè)置,額外說一個(gè),如果同事電腦掛了vpn,大概率是訪問不了你設(shè)置的這個(gè)地址的,退掉vpn即可

4、安裝插件

進(jìn)來第一步就是安裝插件了,這里要用到哪些我也是根據(jù)別人的博客找的,但是由于我主要是用shell命令,所以好像很多都沒用上,但是安裝了也不虧。。。

gitLab Plugin、gitLab Hook Plugin、Xcode integration、keychains and provisioning profiles Management,DingTalk等

PS:說下這個(gè)Upload Keychain or Provisioning Profile File插件,這個(gè)是用來管理iOS證書和配置文件的,但是吐血的是,無論如何都傳不上去,搞到頭禿,最后沒辦法,放棄治療,好在還有別的辦法,往下看

然后DingTalk這個(gè)是在構(gòu)建成功后自動(dòng)通知到釘釘群的插件,我這邊用到了,下面也有介紹

5、iOS相關(guān)設(shè)置

系統(tǒng)管理-Manage Credentials

點(diǎn)擊 Stores scoped to Jenkins下面的域-全局,然后就可以添加全局憑據(jù)了,這里要添加的是:

Upload Keychain or Provisioning Profile File插件用不了,配置文件在這里添加也是一樣的

6、Android相關(guān)設(shè)置

系統(tǒng)管理-系統(tǒng)配置-全局屬性-環(huán)境變量

Android SDK設(shè)置

系統(tǒng)管理-全局工具配置

JDK設(shè)置

Gradle設(shè)置

7、釘釘插件通知配置

在釘釘群的設(shè)置-智能群助手-添加自定義機(jī)器人

要復(fù)制一下webhook鏈接,下面要用,還有關(guān)鍵字設(shè)置,要釘釘和jenkins一致

在jenkins系統(tǒng)管理-系統(tǒng)配置中,設(shè)置釘釘,點(diǎn)擊測(cè)試如果群聊能收到通知就可以

8、新建任務(wù)

這里是Android和iOS各建一個(gè),選擇freestyle即可,兩邊別的都一樣,就是shell命令不一樣,下面會(huì)貼

點(diǎn)開新建的任務(wù),點(diǎn)擊配置

①描述和釘釘

②git信息

git這里是自己項(xiàng)目的git地址和之前全局配置的git賬號(hào)密碼,也可以再這里添加新的賬號(hào)密碼

③構(gòu)建觸發(fā)器和構(gòu)建環(huán)境都不用選

④構(gòu)建

選擇執(zhí)行shell,然后填寫shell命令(iOS和Android我都貼上了,可以自己參考和修改)

里面的一些關(guān)鍵密碼和文件名等,我改成了文字描述或者***,都填自己的

此shell支持的一些功能:清空指定文件夾,替換指定文件,替換指定文件的指定內(nèi)容,導(dǎo)出安裝包,上傳蒲公英,安裝包重命名(version+build+時(shí)間),安裝包上傳svn

Android apk打包shell

⑤構(gòu)建后操作也不用做,保存

9、點(diǎn)擊立即構(gòu)建

如果構(gòu)建失敗可以點(diǎn)擊當(dāng)次構(gòu)建,然后點(diǎn)擊查看控制臺(tái)輸出,查看具體報(bào)錯(cuò)進(jìn)行修改,一般來說只要androidStudio和xcode能夠編譯成功的話,這邊問題都不大,一般都是一些小問題要改,如果構(gòu)建成功,就會(huì)通知到釘釘群了

Flutter開發(fā)--如何布局?

相對(duì)于iOS開發(fā),F(xiàn)lutter的布局更具有靈活性,每個(gè)頁面設(shè)計(jì)都不一樣,相同頁面可選擇的布局方式也不一樣,如果單純的說應(yīng)該如何去布局,我覺得不現(xiàn)實(shí),大家可以參考下 Flutter官方的布局教程 。接下來,筆者,通過項(xiàng)目中的一個(gè)頁面,來一步一步的拆解布局的流程。整個(gè)過程,基本上按照拆解、組件封裝、具體布局這三步來的。

根據(jù)設(shè)計(jì)圖,可以看出整體可以分成兩部分,上面一部分是系統(tǒng)介紹模塊,下面一部分是真正的登錄內(nèi)容,因?yàn)樯婕暗蒋B加,因此考慮用Stack;

系統(tǒng)介紹模塊部分:整體也是涉及到疊加,考慮用Stack,分為四部分。最底部漸變色背景用一個(gè)contanier,無須指定位置,全視圖擴(kuò)展;載放logo圖標(biāo)在上一層,用Image。最后兩個(gè)Text同級(jí)放在最上層。Image,Text各用Positioned包裹去指定位置。

登錄內(nèi)容模塊是最外層是一個(gè)Contanier容器,去控制背景色和圓角。然后是一個(gè)Column元素,逐行排列。

第一行為Image,

第二行為Text,

第三行可以看成一個(gè)小Column,分兩塊進(jìn)行布局

第四行可以看成一個(gè)小Column,分兩塊進(jìn)行布局

第五行可以看作一個(gè)TextButton,

第六行可以看作一個(gè)Row,分三塊進(jìn)行布局

通過上面這樣一步一步的分析后,基本上對(duì)大致的布局有了一個(gè)了解,最外層的控件大致選對(duì)(只要能實(shí)現(xiàn)的話,就是復(fù)雜度以及效率的問題),然后一步一步的拆解每一行的元素,如果有重復(fù)的或者覺得可以封裝出來的部分,則進(jìn)行下一步。

每一行的拆解,大致也是按照這個(gè)思路來進(jìn)行,因此筆者在這里就不做講解了。

在做到第三第四行的時(shí)候,發(fā)現(xiàn)這兩個(gè)很相似,而且設(shè)計(jì)到一些交互邏輯,筆者就想對(duì)第三第四行的這種展示進(jìn)行封裝,覺得今后的布局可能會(huì)用到,因此在這一步,可以先把這一塊兒抽離出一個(gè)控件。利用TextField來實(shí)現(xiàn)這種輸入操作,具體的實(shí)現(xiàn)筆者不再詳細(xì)的描述了。

經(jīng)過這一步,整體的規(guī)劃設(shè)計(jì)圖已經(jīng)有了,各個(gè)組件也都有了,接下來的工作就是組裝了。

具體布局設(shè)計(jì)到一些細(xì)節(jié)的地方,例如整體Column的居中對(duì)齊(crossAxisAlignment)、間隔(Padding或Container包裹,筆者更喜歡用SizedBox占位)、居左居右居中(Align)、點(diǎn)擊事件(GestureDetector)以及圓角(BorderRadius)等一些特殊情況。

像第六行row是放在底部的,就可以在第六行前面增加一個(gè)Spacer()去填充空白區(qū)域。

對(duì)文字顏色大小等,可以用TextStyle直接設(shè)置。

對(duì)于輸入框的刪除按鈕,可以用Offstage這種Flutter特有的控制顯示隱藏的控件。

Flutter開發(fā)--Pub包管理

在原生開發(fā)中, Android 使用 Gradle 來管理依賴, iOS 用 Cocoapods 來管理依賴,Node 中通過 npm來管理依賴。 Flutter 使用配置文件 pubspec.yaml (位于項(xiàng)目根目錄)來管理第三方依賴包。

Pub 是Google官方的Dart Packages倉庫,類似于node中的npm倉庫,android中的jcenter,我們可以在上面查找我們需要的包和插件,也可以向pub發(fā)布我們的包和插件。

Pub工具 包含管理Package、部署Package和部署命令行應(yīng)用的命令。

如果使用的是Flutter SDK,不要直接使用pub命令。而是使用flutter pub命令,如下:

命令pub get/upgrade/outdated 屬于管理Package的依賴關(guān)系

用于檢索當(dāng)前 Package 所依賴的其它 Package。如果 pubspec.lock 文件已經(jīng)存在,則根據(jù)該文件中保存的依賴項(xiàng)版本獲取對(duì)應(yīng)的依賴項(xiàng)。如有必要,將會(huì)創(chuàng)建或更新該文件。

更新 package 依賴

當(dāng)你添加一個(gè) package 后首次運(yùn)行 flutter pub get, Flutter 將會(huì)保存在 pubspec.lock lockfile 中找到的具體 package 版本。這將確保當(dāng)你或者團(tuán)隊(duì)中其他開發(fā)者運(yùn)行 flutter pub get 后能得到相同版本的 package。

如果你想升級(jí)到 package 的最新版本,比如使用 package 的最新特性,請(qǐng)運(yùn)行 flutter pub upgrade 。這將檢索你在 pubspec.yaml 文件中指定的版本約束所允許的最高可用版本。

案例

在flutter項(xiàng)目中導(dǎo)入hive包,在pubspec.yaml文件中添加配置:

執(zhí)行flutter pub get,可以在 pubspec.lock 中看到 hive 版本是2.1.0,這是因?yàn)槟壳癶ive的最新版本是2.1.0,配置“^”表示向最新版本兼容,具體可查看Package版本管理( ),所以再執(zhí)行flutter pub upgrade 可以看到版本還是2.1.0,這個(gè)時(shí)候會(huì)發(fā)現(xiàn)pub get和 pub upgrade 效果一樣。

但是未來如果 hive 發(fā)布了2.2.0版本,這個(gè)時(shí)候使用flutter pub get在pubspec.lock中看到hive版本依舊是2.1.0,而執(zhí)行flutter pub upgrade 后在pubspec.lock中看到hive版本就是2.2.0。

現(xiàn)在先在flutter 項(xiàng)目的pubspec.yaml文件添加配置,指定hive版本是2.0.5,如下:

這個(gè)時(shí)候執(zhí)行flutter pub get后,可以在pubspec.lock的文件中看到hive版本是2.0.5,如果這個(gè)時(shí)候更改配置為 hive: ^2.0.5,再執(zhí)行flutter pub get就會(huì)發(fā)現(xiàn)在pubspec.lock的文件中看到hive版本還是2.0.5,這個(gè)時(shí)候可以執(zhí)行flutter pub outdated查看依賴的每個(gè) package,如下圖,

可以看到,Upgrable項(xiàng)hive版本號(hào)為2.1.0,執(zhí)行flutter pub upgrade 后可以看到在pubspec.lock的文件中看到hive版本是2.1.0

在pubspec.yaml文件添加配置:

lxx_package_demo信息如下圖:

執(zhí)行flutter pub get后在pubspec.lock中看到flutter_log版本是0.0.1

現(xiàn)在修改lxx_package_demo版本號(hào)為0.0.2,再執(zhí)行flutter pub get

會(huì)發(fā)現(xiàn)版本會(huì)及時(shí)更新為0.0.2,這個(gè)時(shí)候執(zhí)行flutter pub get/upgrade效果一樣

參考文檔:


名稱欄目:flutter如何部署,安裝flutter
當(dāng)前路徑:http://weahome.cn/article/dsdschc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部