淺談 iOS 版本號

原文鏈接: https://segmentfault.com/a/1190000002423661

FIR.im 一直在盡量兼容不同使用習慣的版本號形式, 但是在使用中我們發(fā)現好多開發(fā)者對怎么更好的用版本號來標示應用很陌生. 這是篇基礎文章, 簡單介紹 iOS 的版本號.

名詞解釋

Version, 通常說的版本號, 是應用向用戶宣傳說明時候用到的標識. 一般有2段或者3段式, 如:2.1,8.1.2

Version 一般由產品部門確定, 完全迥異的更新需要改變主版本號, 比如 QQ 4.0 的變化非常大, 主版本的變化會更加吸引用戶的眼球,所以有的應用會頻繁的更新主版本號, 比如 FireFox 20.0 . 兩段式的副版本號既包含小功能更新也會包含 bug 修復等,三段式副版本基本都是新功能添加和大問題修復,第三段則表示穩(wěn)定版本基本都是修復 bug

Build , 編譯號指一次唯一編譯標識, 通常是一個遞增整數(安卓強制為數字, iOS 可以是字符串)

Build 都是給內部使用, 用來確定一個唯一版本. 與前面提到的 Version 不會有太大聯系.

iOS 開發(fā)中,這個2個號碼都可以任意字符串或數字.

我們目前遇到的情況有:

忽略了 Version 或 Build. 這兩個號中的一個常年的不會發(fā)生變化.

顛倒了 Version 和 Build.

獲取方法也很簡單:

NSDictionary *info= [[NSBundle mainBundle] infoDictionary];

info[@"CFBundleShortVersionString"]; //Version

info[@"CFBundleVersion"]; // Build

為什么使用版本號

1. 方便標示和溝通

前面提到 版本號更新會給推廣產生一定的積極作用. 所以版本號不要太長, 如果像這樣 "我們隆重推出了 某某某 1.7.14.19257 !", 這個會讓用戶感覺很乏味很像電視購物,而且也不利于傳播. 如果是 "某某 3.0, 大有不同 !"可能就會產生更好的溝通效果.

2. 方便追蹤 Bug

一個應用有 Bug 是肯定的, 但是很快的定位解決問題卻體現出團隊和程序員的能力. 我們經常遇到有開發(fā)者說我提交一個版本, 但是下載下來有還是舊的. 我們幫他解決問題的時候,他自己都搞不清哪個是哪個了, 如果能在"關于"之類的地方顯示當前的版本, 就會容易找到問題.

或者是測試團隊的同事, 可能手里同時有幾個不同分支的版本在測試, 他們需要精確的描述一個測試版本.

自動改變 Build 號

前面提到, Version 是不需要自動變化的, 根據產品或者市場部門的需求,適時的手動改一下就好.

1. agvtool (Apple-generic versioning tool)

agvtool, 是蘋果的命令行工具, 也是集成在 Xcode 中最方便的工具. 我們在自動編譯 SDK 的腳本中用的就是這個方法. 其實就用了一行(其他的高級用法可以參考前面的鏈接):

agvtool next-version

使用前需要在 Xcode 里簡單配置一下, 如圖:

2. 基于SCM的版本控制號

SCM 現在常用的有 Git 和 SVN, 還有一些相對小眾的比如 hg 這里就不多做介紹了. 如果用 Git/SVN 來管理代碼(相信已經沒有人不用了) 我們可以用代碼的提交次數來代替Build號.

Git

REV=`git rev-list HEAD | wc -l | awk '{print $1}'`

其中 HEAD是分支名, 代表當前分支, 可以直接替換成其他分支名, 比如master,dev.

這個腳本放到

SVN

REV=`svnversion -nc | sed -e 's/^[^:]*://;s/[A-Za-z]//'`

后面都是一樣的:

/usr/libexec/PlistBuddy -c "Set :CFBundleVersion ${REV}" "${TARGET_BUILD_DIR}"/${INFOPLIST_PATH}

這樣每次編譯app的時候就自動把版本號加到Info.plist的CFBundleVersion鍵值下

把上面2行代碼 加到 "Build Phase > Run Script"就可以了:

3. 基于日期時間

用發(fā)布日期作為版本好也是許多應用常用的方式, 因為好記好理解. 這里直接附上代碼:

REV=`date +%y%m%d`? #輸出格式141120的六位日期格式,可以根據自己喜歡改變格式

后面都是一樣的:

/usr/libexec/PlistBuddy -c "Set :CFBundleVersion ${REV}" "${TARGET_BUILD_DIR}"/${INFOPLIST_PATH}

使用方法同上.

怎么使用

只要配置好了版本號, 其他的事情就不需要人工干預了, 這里介紹2種使用場景.

1. Crash 收集

收集 Crash 是應用開發(fā)必要的環(huán)節(jié), 通過分析和修復 Crash 信息可以大大提高應用的穩(wěn)定性而不會讓更多的用戶失望甚至刪除應用.

目前有很多收集工具, 比如 FIR.im 旗下的BugHD, Crashlytics等.

2. 用戶反饋

能主動反饋問題的用戶都是極品用戶, 不管要求是不是合理我們都要認真對待. 不管是用各種 SDK 還是用 Email 都要盡量的帶上版本號, 系統(tǒng)信息, 方便確認用戶需求.最不濟也要在"關于"里面能讓用戶找到相關的版本信息以便描述問題.

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市诵闭,隨后出現的幾起案子,更是在濱河造成了極大的恐慌酒繁,老刑警劉巖喜最,帶你破解...
    沈念sama閱讀 216,744評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡霹陡,警方通過查閱死者的電腦和手機憋槐,發(fā)現死者居然都...
    沈念sama閱讀 92,505評論 3 392
  • 文/潘曉璐 我一進店門双藕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人阳仔,你說我怎么就攤上這事忧陪。” “怎么了近范?”我有些...
    開封第一講書人閱讀 163,105評論 0 353
  • 文/不壞的土叔 我叫張陵嘶摊,是天一觀的道長。 經常有香客問我评矩,道長叶堆,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,242評論 1 292
  • 正文 為了忘掉前任稚照,我火速辦了婚禮蹂空,結果婚禮上,老公的妹妹穿的比我還像新娘果录。我一直安慰自己上枕,他們只是感情好,可當我...
    茶點故事閱讀 67,269評論 6 389
  • 文/花漫 我一把揭開白布弱恒。 她就那樣靜靜地躺著辨萍,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上锈玉,一...
    開封第一講書人閱讀 51,215評論 1 299
  • 那天爪飘,我揣著相機與錄音,去河邊找鬼拉背。 笑死师崎,一個胖子當著我的面吹牛,可吹牛的內容都是我干的椅棺。 我是一名探鬼主播犁罩,決...
    沈念sama閱讀 40,096評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼两疚!你這毒婦竟也來了床估?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,939評論 0 274
  • 序言:老撾萬榮一對情侶失蹤诱渤,失蹤者是張志新(化名)和其女友劉穎丐巫,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體勺美,經...
    沈念sama閱讀 45,354評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡递胧,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,573評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了赡茸。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片谓着。...
    茶點故事閱讀 39,745評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖坛掠,靈堂內的尸體忽然破棺而出赊锚,到底是詐尸還是另有隱情,我是刑警寧澤屉栓,帶...
    沈念sama閱讀 35,448評論 5 344
  • 正文 年R本政府宣布舷蒲,位于F島的核電站,受9級特大地震影響友多,放射性物質發(fā)生泄漏牲平。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,048評論 3 327
  • 文/蒙蒙 一域滥、第九天 我趴在偏房一處隱蔽的房頂上張望纵柿。 院中可真熱鬧,春花似錦启绰、人聲如沸昂儒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,683評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽渊跋。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間拾酝,已是汗流浹背燕少。 一陣腳步聲響...
    開封第一講書人閱讀 32,838評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蒿囤,地道東北人客们。 一個月前我還...
    沈念sama閱讀 47,776評論 2 369
  • 正文 我出身青樓,卻偏偏與公主長得像材诽,于是被迫代替她去往敵國和親镶摘。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,652評論 2 354

推薦閱讀更多精彩內容

  • 作者:TravisFIR.im 一直在盡量兼容不同使用習慣的版本號形式, 但是在使用中我們發(fā)現好多開發(fā)者對怎么更好...
    fir_im官方閱讀 2,388評論 2 11
  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理岳守,服務發(fā)現,斷路器碌冶,智...
    卡卡羅2017閱讀 134,652評論 18 139
  • 你種過菜嗎湿痢?
    崗背圍閱讀 201評論 0 0
  • 小燕學習李笑來老師的《通往財富自由之路》學習筆記。****1 當你遇到一扇被鎖著的門扑庞,你應該去哪里找鑰匙譬重? ***...
    藝凌老師閱讀 212評論 0 0
  • 在你不得不用自己的時間為生活必需做交換的階段,千萬不要把一份工作隨便想成一份工作罐氨,而是真的是在賣命臀规。時間即生命,"...
    洛尓閱讀 208評論 0 0