flutter 中的版本管理

flutter 版本管理

  • flutter sdk 版本的選擇:
    1永品、Stable:穩(wěn)定版。近一年中最好的beta版本冬耿。
    2、Beta:測試版召边。每隔幾周都會選取近幾個月中最好的dev版本作為Beta版村视。
    3斧拍、dev:最新的經(jīng)過完全測試的版本。包含新功能关摇,但可能有一些問題荒叶。
    4、master:最新版输虱,但未經(jīng)測試些楣。
  • 查看flutter sdk版本號flutter --version
  • flutter 升級
    通過這個地址找到要更新的版本號
flutter upgrade   //指令代碼      只升級依賴包   
flutter upgrade v1.9.1+hotfix.3 // 升級到指定的  v1.9.1+hotfix.3 版本      
flutter packages get        // 獲取pubspec.yaml中所有的依賴關(guān)系          
flutter packages upgrade  //獲取pubspec.yaml中所有列表中的依賴項(xiàng)的最新版

注意: 不要使用 pub get 或者 pub upgrade命令來管理依賴關(guān)系。建議使用使用flutter packages get或flutter packages upgrade管理依賴關(guān)系宪睹。 如果你想手動使用pub戈毒,可以通過設(shè)置 FLUTTER_ROOT環(huán)境變量來直接運(yùn)行它。

  • flutter SDK 版本回退
    通過這個地址找到要更新的版本號找到要回退的版本的git節(jié)點(diǎn)標(biāo)識横堡,終端進(jìn)入到flutter根目錄埋市,然后終端執(zhí)行 git reset --hard 1ad9baa 就可以了
  • pubspec.yaml文件解釋
version: 1.0.0+1 //app版本號,其中+前面為版本號,后面為構(gòu)建號命贴。
environment:
  sdk: ">=2.1.0 <3.0.0" // Dart sdk版本號道宅,多人開發(fā)中建議寫死
dependencies: // 以下是依賴的三方庫
  flutter:
    sdk: flutter
  cupertino_icons: ^0.1.2
  dio: '3.0.9'
  flutter_screenutil: '1.0.1'
  flutter_easyrefresh: '2.1.1'
  provide: '1.0.2'
  fluro: '1.6.3'

pub

  • Dart 提供了包管理工具 Pub,用來管理代碼和資源胸蛛。從本質(zhì)上說污茵,包(package)實(shí)際上就是一個包含了 pubspec.yaml 文件的目錄,其內(nèi)部可以包含代碼葬项、資源泞当、腳本、測試和文檔等文件民珍。包中包含了需要被外部依賴的功能抽象襟士,也可以依賴其他包。
  • 在 Dart 中嚷量,庫和應(yīng)用都屬于包陋桂。pubspec.yaml 是包的配置文件,包含了包的元數(shù)據(jù)(比如蝶溶,包的名稱和版本)嗜历、運(yùn)行環(huán)境(也就是 Dart SDK 與 Fluter SDK 版本)、外部依賴、內(nèi)部配置(比如梨州,資源管理)痕囱。

在下面的例子中,我們聲明了一個 flutter_app_example 的應(yīng)用配置文件暴匠,其版本為 1.0咐蝇,Dart 運(yùn)行環(huán)境支持 2.1 至 3.0 之間,依賴 flutter 和 cupertino_icon:

name: flutter_app_example # 應(yīng)用名稱
description: A new Flutter application. # 應(yīng)用描述
version: 1.0.0 
#Dart 運(yùn)行環(huán)境區(qū)間
environment:
  sdk: ">=2.1.0 <3.0.0"
#Flutter 依賴庫
dependencies:
  flutter:
    sdk: flutter
  cupertino_icons: ">0.1.1"

運(yùn)行環(huán)境和依賴庫 cupertino_icons 冒號后面的部分是版本約束信息巷查,由一組空格分隔的版本描述組成有序,可以支持指定版本、版本號區(qū)間岛请,以及任意版本這三種版本約束方式旭寿。比如上面的例子中,cupertino_icons 引用了大于 0.1.1 的版本崇败。

需要注意的是盅称,由于元數(shù)據(jù)與名稱使用空格分隔,因此版本號中不能出現(xiàn)空格后室;同時又由于大于符號“>”也是 YAML 語法中的折疊換行符號缩膝,因此在指定版本范圍的時候,必須使用引號岸霹, 比如">=2.1.0 < 3.0.0"疾层。

對于包,我們通常是指定版本區(qū)間贡避,而很少直接指定特定版本痛黎,因?yàn)榘壸兓茴l繁,如果有其他的包直接或間接依賴這個包的其他版本時刮吧,就會經(jīng)常發(fā)生沖突湖饱。

而對于運(yùn)行環(huán)境,如果是團(tuán)隊(duì)多人協(xié)作的工程杀捻,建議將 Dart 與 Flutter 的 SDK 環(huán)境寫死井厌,統(tǒng)一團(tuán)隊(duì)的開發(fā)環(huán)境,避免因?yàn)榭?SDK 版本出現(xiàn)的 API 差異進(jìn)而導(dǎo)致工程問題致讥。

比如仅仆,在上面的示例中,我們可以將 Dart SDK 寫死為 2.3.0拄踪,F(xiàn)lutter SDK 寫死為 1.2.1蝇恶。

environment:
  sdk: 2.3.0
  flutter: 1.2.1

基于版本的方式引用第三方包,需要在其 Pub 上進(jìn)行公開發(fā)布惶桐,我們可以訪問https://pub.dev/來獲取可用的第三方包。而對于不對外公開發(fā)布,或者目前處于開發(fā)調(diào)試階段的包姚糊,我們需要設(shè)置數(shù)據(jù)源贿衍,使用本地路徑或 Git 地址的方式進(jìn)行包聲明。

在下面的例子中救恨,我們分別以路徑依賴以及 Git 依賴的方式贸辈,聲明了 package1 和 package2 這兩個包:

dependencies:
  package1:
    path: ../package1/  # 路徑依賴
  date_format:
    git:
      url: https://github.com/xxx/package2.git #git 依賴

在開發(fā)應(yīng)用時,我們可以不寫明具體的版本號肠槽,而是以區(qū)間的方式聲明包的依賴擎淤;但對于一個程序而言,其運(yùn)行時具體引用哪個版本的依賴包必須要確定下來秸仙。因此嘴拢,除了管理第三方依賴,包管理工具 Pub 的另一個職責(zé)是寂纪,找出一組同時滿足每個包版本約束的包版本席吴。包版本一旦確定,接下來就是下載對應(yīng)版本的包了捞蛋。

對于 dependencies 中的不同數(shù)據(jù)源孝冒,Dart 會使用不同的方式進(jìn)行管理,最終會將遠(yuǎn)端的包全部下載到本地拟杉。比如庄涡,對于 Git 聲明依賴的方式,Pub 會 clone Git 倉庫搬设;對于版本號的方式啼染,Pub 則會從 pub.dartlang.org 下載包。如果包還有其他的依賴包焕梅,比如 package1 包還依賴 package3 包迹鹅,Pub 也會一并下載。

然后贞言,在完成了所有依賴包的下載后斜棚,Pub 會在應(yīng)用的根目錄下創(chuàng)建.packages 文件,將依賴的包名與系統(tǒng)緩存中的包文件路徑進(jìn)行映射该窗,方便后續(xù)維護(hù)弟蚀。

最后,Pub 會自動創(chuàng)建 pubspec.lock 文件酗失。pubspec.lock 文件的作用類似 iOS 的 Podfile.lock 或前端的 package-lock.json 文件义钉,用于記錄當(dāng)前狀態(tài)下實(shí)際安裝的各個直接依賴、間接依賴的包的具體來源和版本號规肴。

比較活躍的第三方包的升級通常比較頻繁捶闸,因此對于多人協(xié)作的 Flutter 應(yīng)用來說夜畴,我們需要把 pubspec.lock 文件也一并提交到代碼版本管理中,這樣團(tuán)隊(duì)中的所有人在使用這個應(yīng)用時安裝的所有依賴都是完全一樣的删壮,以避免出現(xiàn)庫函數(shù)找不到或者其他的依賴錯誤贪绘。

除了提供功能和代碼維度的依賴之外,包還可以提供資源的依賴央碟。在依賴包中的 pubspec.yaml 文件已經(jīng)聲明了同樣資源的情況下税灌,為節(jié)省應(yīng)用程序安裝包大小,我們需要復(fù)用依賴包中的資源亿虽。
在下面的例子中菱涤,我們的應(yīng)用程序依賴了一個名為 package4 的包,而它的目錄結(jié)構(gòu)是這樣的:

pubspec.yaml    
└──assets
    ├──2.0x
    │   └── placeholder.png
    └──3.0x
        └── placeholder.png

其中洛勉,placeholder.png 是可復(fù)用資源粘秆。因此,在應(yīng)用程序中坯认,我們可以通過 Image 和 AssetImage 提供的 package 參數(shù)翻擒,根據(jù)設(shè)備實(shí)際分辨率去加載圖像。

Image.asset('assets/placeholder.png', package: 'package4');
 
AssetImage('assets/placeholder.png', package: 'package4');
pub get 和 pub upgrade 區(qū)別
  • 有時候我們需要更新三方庫牛哺,使用pub get 更新確得不到最新的代碼陋气,這是應(yīng)為,對于一個三方庫如果pubspec中指定的版本與緩存中的版本相同的話引润,pub就不會去更新最新的巩趁,而是用pub upgrade不論本地有沒有該版本的緩存pub都回去網(wǎng)絡(luò)上更新最新的版本
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市淳附,隨后出現(xiàn)的幾起案子议慰,更是在濱河造成了極大的恐慌,老刑警劉巖奴曙,帶你破解...
    沈念sama閱讀 216,544評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件别凹,死亡現(xiàn)場離奇詭異,居然都是意外死亡洽糟,警方通過查閱死者的電腦和手機(jī)硫眯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評論 3 392
  • 文/潘曉璐 我一進(jìn)店門种蘸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蹋绽,“玉大人昧互,你說我怎么就攤上這事⌒浇椋” “怎么了祠饺?”我有些...
    開封第一講書人閱讀 162,764評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長汁政。 經(jīng)常有香客問我道偷,道長缀旁,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,193評論 1 292
  • 正文 為了忘掉前任试疙,我火速辦了婚禮诵棵,結(jié)果婚禮上抠蚣,老公的妹妹穿的比我還像新娘祝旷。我一直安慰自己,他們只是感情好嘶窄,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,216評論 6 388
  • 文/花漫 我一把揭開白布怀跛。 她就那樣靜靜地躺著,像睡著了一般柄冲。 火紅的嫁衣襯著肌膚如雪吻谋。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,182評論 1 299
  • 那天现横,我揣著相機(jī)與錄音漓拾,去河邊找鬼。 笑死戒祠,一個胖子當(dāng)著我的面吹牛骇两,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播姜盈,決...
    沈念sama閱讀 40,063評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼低千,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了馏颂?” 一聲冷哼從身側(cè)響起示血,我...
    開封第一講書人閱讀 38,917評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎救拉,沒想到半個月后难审,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,329評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡亿絮,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,543評論 2 332
  • 正文 我和宋清朗相戀三年告喊,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片壹无。...
    茶點(diǎn)故事閱讀 39,722評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡葱绒,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出斗锭,到底是詐尸還是另有隱情地淀,我是刑警寧澤,帶...
    沈念sama閱讀 35,425評論 5 343
  • 正文 年R本政府宣布岖是,位于F島的核電站帮毁,受9級特大地震影響实苞,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜烈疚,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,019評論 3 326
  • 文/蒙蒙 一黔牵、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧爷肝,春花似錦猾浦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至对嚼,卻和暖如春夹抗,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背纵竖。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評論 1 269
  • 我被黑心中介騙來泰國打工漠烧, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人靡砌。 一個月前我還...
    沈念sama閱讀 47,729評論 2 368
  • 正文 我出身青樓已脓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親乏奥。 傳聞我的和親對象是個殘疾皇子摆舟,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,614評論 2 353