最近在做的一個項目,項目的前期采用Weex開發(fā)。但是隨著交互復雜度的增加,Weex一處開發(fā)多處多處運行的特征并沒有很好的體現(xiàn),相反很多時候我們還是需要做IOS和Android的適配。如今火熱的Flutter相比Weex和Rn來說,給出了更好的跨平臺解決方案。所以我們設計了一套基于Weex實現(xiàn),底層跑在Flutter Engine上的框架。
創(chuàng)新互聯(lián)公司是一家專注于做網(wǎng)站、網(wǎng)站制作與策劃設計,蘇尼特左網(wǎng)站建設哪家好?創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設十余年,網(wǎng)設計領域的專業(yè)建站公司;建站業(yè)務涵蓋:蘇尼特左等地區(qū)。蘇尼特左做網(wǎng)站價格咨詢:13518219792
底層的Runtime采用isolate engine,框架業(yè)務邏輯,Dom的解析邏輯和Render邏輯都跑在這里。
渲染引擎采用Flutter的Skia,徹底剝離了Android和IOS的差異性.
將Weex VirsualDom的解析都替換成Flutter Widget.
設計基于Weex2Dart的Brider,使JS和Dart可以相互調(diào)用
weex-demo的性能展示
release環(huán)境下采用AOT模式,性能會有質(zhì)的飛躍。
Android-Release版本只有10m大小
相比Weex和Rn具有更好的性能,同時具有更好的跨平臺性
相比Flutter,具有動態(tài)部署的能力(Flutter Release采用AoT模式并沒有動態(tài)部署的能力,即使Debug版本也只是開發(fā)環(huán)境下才有動態(tài)化能力并沒有可以實施項目的能力)
只需要會Weex開發(fā)或則Rn開發(fā)就可以,不需要額外學習Dart,已有的Weex項目可以無縫切換。
??因為我們使用Flutter跨平臺技術開發(fā)App時,會有很多公用組件,因為Flutter中一切皆為Widget,widget也比較細粒度,所以我們需要進行封裝,用于一個項目或者公司不同項目中去~
??那么今天寫寫如何發(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,項目名稱,項目描述,作者等
如果上傳失敗試試????的命令:
在執(zhí)行該命令時,可能會中途調(diào)到網(wǎng)頁,要求你登錄google賬號,登錄授權,到時候登錄賬號并授權就可以了。
因為我們直接使用flutter packages pub publish是發(fā)布到Pub.dev上,并不是發(fā)布到私有倉庫,該怎么辦呢?
其實呢,也很簡單!像versionCode,項目名,等都和發(fā)布Pub.dev是一樣的。沒啥區(qū)別。
有兩種方式:
就是這么簡單o( @ )o
相信大家引用Pub.dev上的第三方庫都會了哈,到處都是這里不講了
在使用flutter pub get就可以拉到私有倉庫項目了
以上就差不多聊了聊package發(fā)布和獲取的事兒了,都很明了,大家可以試試,挺簡單的。
PS: 寫文不易,覺得沒有浪費你時間,請給個點贊~ ????
操作系統(tǒng):macOS Big Sur
前置需求:
ok,開始搞jenkins
1、使用homebrew安裝jenkins
Terminal運行命令brew install Jenkins
2、運行jenkins
Terminal運行命令jenkins,最終出現(xiàn) Jenkins is fully up and running代表運行成功
3、初始化jenkins
在瀏覽器地址欄輸入
然后首次安裝啟動就會出現(xiàn)新手引導,根據(jù)引導操作
自定義jenkins那里選擇安裝推薦的插件
PS:這里我很多插件都安裝失敗了,這個沒關系,可以進去再自己安裝或者不再安裝貌似也沒啥影響,繼續(xù)向下操作即可
最后的實例配置那,默認即可,也可以設置一個地址
PS:如果要設置的話,就是自己的電腦ip地址+8080端口就行,配置完之后系統(tǒng)管理里報了一個反向代理設置有誤,目前沒發(fā)現(xiàn)這個報錯有什么不好的影響,這個地址也可以以后在jenkins系統(tǒng)管理-系統(tǒng)配置里改的,這個主要是用來讓別的同事來訪問時要用的,自己用的話就不用設置,額外說一個,如果同事電腦掛了vpn,大概率是訪問不了你設置的這個地址的,退掉vpn即可
4、安裝插件
進來第一步就是安裝插件了,這里要用到哪些我也是根據(jù)別人的博客找的,但是由于我主要是用shell命令,所以好像很多都沒用上,但是安裝了也不虧。。。
gitLab Plugin、gitLab Hook Plugin、Xcode integration、keychains and provisioning profiles Management,DingTalk等
PS:說下這個Upload Keychain or Provisioning Profile File插件,這個是用來管理iOS證書和配置文件的,但是吐血的是,無論如何都傳不上去,搞到頭禿,最后沒辦法,放棄治療,好在還有別的辦法,往下看
然后DingTalk這個是在構建成功后自動通知到釘釘群的插件,我這邊用到了,下面也有介紹
5、iOS相關設置
系統(tǒng)管理-Manage Credentials
點擊 Stores scoped to Jenkins下面的域-全局,然后就可以添加全局憑據(jù)了,這里要添加的是:
Upload Keychain or Provisioning Profile File插件用不了,配置文件在這里添加也是一樣的
6、Android相關設置
系統(tǒng)管理-系統(tǒng)配置-全局屬性-環(huán)境變量
Android SDK設置
系統(tǒng)管理-全局工具配置
JDK設置
Gradle設置
7、釘釘插件通知配置
在釘釘群的設置-智能群助手-添加自定義機器人
要復制一下webhook鏈接,下面要用,還有關鍵字設置,要釘釘和jenkins一致
在jenkins系統(tǒng)管理-系統(tǒng)配置中,設置釘釘,點擊測試如果群聊能收到通知就可以
8、新建任務
這里是Android和iOS各建一個,選擇freestyle即可,兩邊別的都一樣,就是shell命令不一樣,下面會貼
點開新建的任務,點擊配置
①描述和釘釘
②git信息
git這里是自己項目的git地址和之前全局配置的git賬號密碼,也可以再這里添加新的賬號密碼
③構建觸發(fā)器和構建環(huán)境都不用選
④構建
選擇執(zhí)行shell,然后填寫shell命令(iOS和Android我都貼上了,可以自己參考和修改)
里面的一些關鍵密碼和文件名等,我改成了文字描述或者***,都填自己的
此shell支持的一些功能:清空指定文件夾,替換指定文件,替換指定文件的指定內(nèi)容,導出安裝包,上傳蒲公英,安裝包重命名(version+build+時間),安裝包上傳svn
Android apk打包shell
⑤構建后操作也不用做,保存
9、點擊立即構建
如果構建失敗可以點擊當次構建,然后點擊查看控制臺輸出,查看具體報錯進行修改,一般來說只要androidStudio和xcode能夠編譯成功的話,這邊問題都不大,一般都是一些小問題要改,如果構建成功,就會通知到釘釘群了
相對于iOS開發(fā),F(xiàn)lutter的布局更具有靈活性,每個頁面設計都不一樣,相同頁面可選擇的布局方式也不一樣,如果單純的說應該如何去布局,我覺得不現(xiàn)實,大家可以參考下 Flutter官方的布局教程 。接下來,筆者,通過項目中的一個頁面,來一步一步的拆解布局的流程。整個過程,基本上按照拆解、組件封裝、具體布局這三步來的。
根據(jù)設計圖,可以看出整體可以分成兩部分,上面一部分是系統(tǒng)介紹模塊,下面一部分是真正的登錄內(nèi)容,因為涉及到疊加,因此考慮用Stack;
系統(tǒng)介紹模塊部分:整體也是涉及到疊加,考慮用Stack,分為四部分。最底部漸變色背景用一個contanier,無須指定位置,全視圖擴展;載放logo圖標在上一層,用Image。最后兩個Text同級放在最上層。Image,Text各用Positioned包裹去指定位置。
登錄內(nèi)容模塊是最外層是一個Contanier容器,去控制背景色和圓角。然后是一個Column元素,逐行排列。
第一行為Image,
第二行為Text,
第三行可以看成一個小Column,分兩塊進行布局
第四行可以看成一個小Column,分兩塊進行布局
第五行可以看作一個TextButton,
第六行可以看作一個Row,分三塊進行布局
通過上面這樣一步一步的分析后,基本上對大致的布局有了一個了解,最外層的控件大致選對(只要能實現(xiàn)的話,就是復雜度以及效率的問題),然后一步一步的拆解每一行的元素,如果有重復的或者覺得可以封裝出來的部分,則進行下一步。
每一行的拆解,大致也是按照這個思路來進行,因此筆者在這里就不做講解了。
在做到第三第四行的時候,發(fā)現(xiàn)這兩個很相似,而且設計到一些交互邏輯,筆者就想對第三第四行的這種展示進行封裝,覺得今后的布局可能會用到,因此在這一步,可以先把這一塊兒抽離出一個控件。利用TextField來實現(xiàn)這種輸入操作,具體的實現(xiàn)筆者不再詳細的描述了。
經(jīng)過這一步,整體的規(guī)劃設計圖已經(jīng)有了,各個組件也都有了,接下來的工作就是組裝了。
具體布局設計到一些細節(jié)的地方,例如整體Column的居中對齊(crossAxisAlignment)、間隔(Padding或Container包裹,筆者更喜歡用SizedBox占位)、居左居右居中(Align)、點擊事件(GestureDetector)以及圓角(BorderRadius)等一些特殊情況。
像第六行row是放在底部的,就可以在第六行前面增加一個Spacer()去填充空白區(qū)域。
對文字顏色大小等,可以用TextStyle直接設置。
對于輸入框的刪除按鈕,可以用Offstage這種Flutter特有的控制顯示隱藏的控件。
在原生開發(fā)中, Android 使用 Gradle 來管理依賴, iOS 用 Cocoapods 來管理依賴,Node 中通過 npm來管理依賴。 Flutter 使用配置文件 pubspec.yaml (位于項目根目錄)來管理第三方依賴包。
Pub 是Google官方的Dart Packages倉庫,類似于node中的npm倉庫,android中的jcenter,我們可以在上面查找我們需要的包和插件,也可以向pub發(fā)布我們的包和插件。
Pub工具 包含管理Package、部署Package和部署命令行應用的命令。
如果使用的是Flutter SDK,不要直接使用pub命令。而是使用flutter pub命令,如下:
命令pub get/upgrade/outdated 屬于管理Package的依賴關系
用于檢索當前 Package 所依賴的其它 Package。如果 pubspec.lock 文件已經(jīng)存在,則根據(jù)該文件中保存的依賴項版本獲取對應的依賴項。如有必要,將會創(chuàng)建或更新該文件。
更新 package 依賴
當你添加一個 package 后首次運行 flutter pub get, Flutter 將會保存在 pubspec.lock lockfile 中找到的具體 package 版本。這將確保當你或者團隊中其他開發(fā)者運行 flutter pub get 后能得到相同版本的 package。
如果你想升級到 package 的最新版本,比如使用 package 的最新特性,請運行 flutter pub upgrade 。這將檢索你在 pubspec.yaml 文件中指定的版本約束所允許的最高可用版本。
案例
在flutter項目中導入hive包,在pubspec.yaml文件中添加配置:
執(zhí)行flutter pub get,可以在 pubspec.lock 中看到 hive 版本是2.1.0,這是因為目前hive的最新版本是2.1.0,配置“^”表示向最新版本兼容,具體可查看Package版本管理( ),所以再執(zhí)行flutter pub upgrade 可以看到版本還是2.1.0,這個時候會發(fā)現(xiàn)pub get和 pub upgrade 效果一樣。
但是未來如果 hive 發(fā)布了2.2.0版本,這個時候使用flutter pub get在pubspec.lock中看到hive版本依舊是2.1.0,而執(zhí)行flutter pub upgrade 后在pubspec.lock中看到hive版本就是2.2.0。
現(xiàn)在先在flutter 項目的pubspec.yaml文件添加配置,指定hive版本是2.0.5,如下:
這個時候執(zhí)行flutter pub get后,可以在pubspec.lock的文件中看到hive版本是2.0.5,如果這個時候更改配置為 hive: ^2.0.5,再執(zhí)行flutter pub get就會發(fā)現(xiàn)在pubspec.lock的文件中看到hive版本還是2.0.5,這個時候可以執(zhí)行flutter pub outdated查看依賴的每個 package,如下圖,
可以看到,Upgrable項hive版本號為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版本號為0.0.2,再執(zhí)行flutter pub get
會發(fā)現(xiàn)版本會及時更新為0.0.2,這個時候執(zhí)行flutter pub get/upgrade效果一樣
參考文檔:
新聞標題:flutter如何部署,安裝flutter
文章起源:http://chinadenli.net/article42/dsdschc.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作、軟件開發(fā)、企業(yè)建站、Google、自適應網(wǎng)站、網(wǎng)站導航
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)