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

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

flutter每天清空,flutter自動(dòng)更新

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

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

為昭通等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及昭通網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為網(wǎng)站建設(shè)、網(wǎng)站制作、昭通網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!

前置需求:

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)擊測試如果群聊能收到通知就可以

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的setState(狀態(tài)刷新)

Flutter有兩個(gè)常用的狀態(tài)類:

標(biāo)記為dirty,執(zhí)行的markNeedsBuild,定義在Element類中:

當(dāng)前Element節(jié)點(diǎn)被標(biāo)記為dirty,同時(shí)調(diào)用owner的scheduleBuildFor方法:

將element元素添加到全局的“臟”鏈表里。

BuildOwner用來管理哪些需要更新的Widget。這個(gè)owner最開始被初始化的地方在WidgetsBinding的initInstances方法中,隨后初始化了onBuildScheduled方法,對(duì)應(yīng)執(zhí)行的是_handleBuildScheduled,定義在WidgetsBinding類中:

ensureVisualUpdate 方法定義在SchedulerBinding類中:

在提交下一幀繪制的時(shí)候會(huì)調(diào)用到scheduleFrame方法,提交給引擎繪制,看看scheduleFrame方法,也定義在SchedulerBinding類中:

提交給引擎繪制之后,會(huì)收到onDrawFrame的回調(diào),最終執(zhí)行到_handleDrawFrame方法中,對(duì)應(yīng)的是handleDrawFrame方法,定義在SchedulerBinding類中:

在RendererBinding的initInstances方法中添加了一個(gè)回調(diào)到這個(gè)List中,對(duì)應(yīng)的是RenderBinding的drawFrame方法,對(duì)應(yīng)的節(jié)點(diǎn)進(jìn)行繪制渲染操作。

WidgetsBinding中的drawFrame方法:

看看這里的buildScope方法,定義在BuildOwner方法中。在上面 scheduleBuildFor 方法介紹中有提到:"scheduleBuildFor 是把一個(gè) element 添加到 _dirtyElements 鏈表,以便當(dāng)[WidgetsBinding.drawFrame]中調(diào)用 buildScope 的時(shí)候能夠重構(gòu) element。onBuildScheduled()是一個(gè) BuildOwner 的回調(diào)"。在 drawFrame 中調(diào)用 buildOwner.buildScope(renderViewElement)更新 elements。

_dirtyElements列表在遍歷的過程中執(zhí)行rebuild方法,此時(shí)將所有標(biāo)記為dirty的Element節(jié)點(diǎn)依次執(zhí)行rebuild,preformRebuild,build,updateChild,update方法,執(zhí)行界面更新。完成build,update操作完成之后,后續(xù)會(huì)將需要繪制的RenderObject添加到需要layout的列表中,等待繪制渲染。所有繪制完成之后將_dirtyElments列表清空,_inDirtyList標(biāo)記位置為false。

提交給引擎繪制渲染

看看super.drawFrame(),這里就執(zhí)行到了RendererBinding類中,定義如下:

這里就是將最終需要繪制渲染的畫面提交給引擎的地方了,繪制完成之后就在界面顯示更新后的視圖了。

Flutter 文件路徑

path_provider是flutter提供的一個(gè)獲取應(yīng)用存儲(chǔ)路徑的插件,它封裝了統(tǒng)一的api來獲取Android和ios兩個(gè)平臺(tái)的應(yīng)用存儲(chǔ)路徑,提供的api如下:

getTemporaryDirectory():獲取應(yīng)用臨時(shí)文件夾,該文件夾用來保存應(yīng)用的緩存,可以隨時(shí)刪除用于清緩存,對(duì)應(yīng)于Android的getCacheDir()和ios的NSTemporaryDirectory();

getApplicationDocumentsDirectory():獲取應(yīng)用安裝路徑,在應(yīng)用被卸載的時(shí)候刪除,對(duì)應(yīng)Android的AppDate目錄和iOS的NSDocumentDirectory目錄;

getExternalStorageDirectory():獲取存儲(chǔ)卡目錄,僅支持Android;

我們通過File和Directory來創(chuàng)建文件和文件夾時(shí)首先要獲取到應(yīng)用的相關(guān)路徑,不然會(huì)報(bào)錯(cuò);

File對(duì)象和Directory對(duì)象封裝在dart:io中,使用時(shí)需要先引入該庫:

Directory對(duì)象提供listSync()方法獲取文件夾里的內(nèi)容,該方法返回一個(gè)數(shù)組;

文件和文件夾都通過delete刪除,delete異步,deleteSync同步;如果一個(gè)文件夾是非空的刪除會(huì)報(bào)錯(cuò),刪除非空文件夾需要先清空該文件夾:

flutter對(duì)json序列化需要引入 dart:convert 庫:

通過jsonEncode/jsonDecode來轉(zhuǎn)換json對(duì)象:

// 將test目錄下的info.json復(fù)制到test2目錄下的info2.json中

引入包archive包:

壓縮:

壓縮前使用ZipFileEncoder先聲明處理壓縮的對(duì)象,調(diào)用該對(duì)象的zipDirectory方法壓縮文件,該方法接受兩個(gè)參數(shù),第一個(gè)是要壓縮文件/文件夾的路徑,第二個(gè)是壓縮包的保存路徑;

解壓:

Android Studio Emulator依然顯示刪除的device

如下,

當(dāng)你添加完所有環(huán)境變量,或者多次卸掉重裝android studio后,再次插入手機(jī),或者是開啟模擬器的時(shí)候,vscode或android studio都顯示no devices的時(shí)候,以下簡單的解決方法或許能幫到你。

1、先檢查自己以往是否有安裝adb。在cmd中查看adb的版本。輸入:adb version。

2、如果有安裝的話,建議在C:WindowsSystem和C:WindowsSystem32刪除adb.exe, AdbWinApi.dll和AdbWinUsbApi.dll三個(gè)文件即可。

3、你在android studio經(jīng)過了一頓操作,例如安裝了一系列的sdk文件,還有創(chuàng)建了模擬器之后,也執(zhí)行了第二步,環(huán)境變量也設(shè)置好了,在cmd中輸入adb version。

這就代表了你已經(jīng)徹底清除了舊版本的adb,用的是目前最新版本的adb。這個(gè)也會(huì)隨著flutter upgrade的更新而更新。我今天更新了flutter版本,adb應(yīng)該是最新的。

4、在管理員模式下打開cmd,輸入adb devices,會(huì)看見當(dāng)前已經(jīng)打開了的安卓設(shè)備。

5、輸入adb connect 你安卓設(shè)備的名字 。我的安卓設(shè)備名字是4ad32643。所以我就輸入adb connect 4ad32543。

failed那一行不用管,這時(shí)候看回vscode或者是android studio,即會(huì)出現(xiàn)設(shè)備,可進(jìn)行flutter的正常調(diào)試。


名稱欄目:flutter每天清空,flutter自動(dòng)更新
鏈接URL:http://weahome.cn/article/hoicgg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部