小米應用商店運營了大概半年了,過程當中有喜有淚,咱們在運營過程當中,發現有的運營和商務同窗對Android的一些概念瞭解不深,所以準備了一些知識,會逐步發佈出來,第一篇是關於版本的。spa
先上結論:orm
Google爲APK定義了兩個關於版本屬性:VersionCode和VersionName,他們有不一樣的用途。開發
VersionCode:對消費者不可見,僅用於應用市場、程序內部識別版本,判斷新舊等用途。產品
VersionName:展現給消費者,消費者會經過它認知本身安裝的版本,下文提到的版本號都是說VersionName。io
結尾有三個常見問題的解決方案監控
同一個版本號,對應了多個VersionCode怎麼辦軟件
發佈了一個VersionCode錯誤的版本怎麼辦程序
發出去的應用有Bug要換回舊版,怎麼操做?word
而後講講來龍去脈計算機
你們在使用軟件和應用時,都會涉及到版本的概念,你們都知道的,好比Win XP,QQ2012,小米桌面1.6。之因此會有版本,主要是由於軟件產品一直在發展、變化的。版本的概念能夠幫助消費者識別不一樣時期的產品。
而展示在消費者面前的版本,和開發者內部使用的一般是不一樣的版本。開發時一般會使用數字做爲標誌,好比6.1.7600.16385,實際上是Win 7第一個正式版的版本號,而Win 7 SP1的版本號是6.1.7601.17514,這樣長長一串數字對消費者毫無心義,因此在產品發佈時一般會起一個更容易懂的版本。下文中會把Win 7這樣的用於展現的版本叫作[VersionName],6.1.7601.17514這樣用於程序標識的版本叫作[VersionCode]
早年由於軟件主要本身負責本身的分發、升級等方面,因此版本號也至關自由,各家都有不一樣的規範。可是近年來移動設備崛起,App Store這樣的應用商店集中分發成了主流。以升級爲例,應用商店會負責檢查消費者手機上應用的版本,並和商店裏面最新的版本比較,若是商店裏面的版本比較新,消費者手機上的版本比較舊,就會提醒消費者升級。
這就涉及到如何識別新、舊的問題。
對於計算機來講,最可靠的判斷方式就是數字,數字有不少好處:程序容易判斷、格式簡單不容易出錯、肉眼容易識別等。因此Google要求每一個應用都要在APK安裝包中記錄這個安裝包的[VersionCode],只要拿到這個APK文件,就能夠知道它對應的[VersionCode]是多少,應用商店就會以這個[VersionCode]爲準,來判斷版本。安裝包的[VersionCode]數字越大就越新。這樣開發者在開發過程當中,每有一個新版本只要加大一點這個數字就能夠了。好比第一個版本的[VersionCode]是1,第二個版本是2。由於開發者可能天天可能會產生多個沒有發佈的版本,因此這個數字會增加的很快。
通過一段時間的開發,這個數字會變得比較大,好比16385,這時對一個消費者,這樣的數字其實不太具備可識別性,好比說Win 16385和Win 17514在傳達信息方面效果並很差,不利於產品的市場推廣。所以Google也支持在AKP安裝包內記錄[VersionName],你能夠叫Win 七、Win Vista都沒問題,能夠知足市場、傳播方面的需求,這樣[VersionName]其實不具有比較新、舊版本的能力,只是用來展現給消費者看的。
綜上所述
VersionCode:對消費者不可見,僅用於應用市場、程序內部識別版本,判斷新舊等用途。
VersionName:展現給消費者,消費者會經過它認知本身安裝的版本。通常咱們說的版本號就是這個。
咱們在運營應用商店的過程當中,發現有的開發者會遇到一些問題。
一、同一個VersionName(版本號),對應了多個VersionCode
這種狀況很常見,好比說新版本發佈以後,某個商店反饋說存在xxx問題,須要修復、定製等等操做,因而商務找工程師出了個新版本,考慮到是小版本升級,版本號沒變化,可是VersionCode已經變了。
可能遇到的問題:若是這個新版只在部分商店上線,就會出現都是3.1版,A商店的版本其實比B商店的新。已經安裝了新版本的用戶,還會被提示升級,這時候用戶會困擾,爲何我裝了3.1還要升級到3.1?部分商店爲了最新會抓包,致使渠道包流竄,影響運營監控和分析。
解決方案:a.版本號應該和VersionCode一塊兒漲,並且一旦發佈新版本,就在全部渠道上架新版。
二、發佈了一個VersionCode錯誤的版本
有時候由於工程師不當心,發佈了一個VersionCode過大的版本,好比1.1.1.20版本的VersionCode寫成了111,而1.1.1.27版本的VersionCode寫成了11127,可是後面發佈1.1.2版但願延續舊的VersionCode,用112。
可能遇到的問題:1.1.1.27版的用戶將沒法得到1.1.2版本的升級,由於在程序看來1.1.1.27版本是比較新的,同時,已經使用了1.1.2版本的用戶,可能會收到舊版本的升級提示,比並降級回舊版
解決方案:其實很簡單,由於VersionCode對最終用戶是不可見的,只要增長就行了,上文的例子,新版VersionCode直接取11200就齊活了。
三、發佈了一個有Bug的版本,好捉急
偶爾會遇到版本已經發布了,次日忽然發現,糟糕,有Bug,用戶開始罵了!因而商務同窗到各家市場要求退回舊版本。