Google為APK定義了兩個關於版本號屬性:VersionCode和VersionName,他們有不同的用途。
VersionCode:對消費者不可見。僅用於應用市場、程序內部識別版本號,推斷新舊等用途。
VersionName:展示給消費者,消費者會通過它認知自己安裝的版本號,下文提到的版本號號都是說VersionName。
結尾有三個常見問題的解決方式
同一個版本,相應了多個VersionCode怎么辦
公布了一個VersionCode錯誤的版本號怎么辦
發出去的應用有Bug要換回舊版,怎么操作?
然后講講前因后果
大家在使用軟件和應用時,都會涉及到版本號的概念,大家都知道的。比方Win XP,QQ2012,小米桌面1.6。
之所以會有版本號,主要是由於軟件產品一直在發展、變化的。
版本號的概念能夠幫助消費者識別不同一時候期的產品。
而展如今消費者面前的版本號,和開發人員內部使用的一般是不同的版本號。開發時一般會使用數字作為標志,比方6.1.7600.16385。事實上是Win 7第一個正式版的版本號號,而Win 7 SP1的版本號號是6.1.7601.17514,這樣長長一串數字對消費者毫無意義,所以在產品公布時一般會起一個更easy懂的版本號。下文中會把Win 7這種用於展示的版本號叫做[VersionName],6.1.7601.17514這樣用於程序標識的版本號叫做[VersionCode]
早年由於軟件主要自己負責自己的分發、升級等方面。所以版本號號也相當自由,各家都有不同的規范。可是近年來移動設備崛起,App Store這種應用商店集中分發成了主流。以升級為例,應用商店會負責檢查消費者手機上應用的版本號,並和商店里面最新的版本號比較,假設商店里面的版本號比較新,消費者手機上的版本號比較舊。就會提醒消費者升級。
這就涉及到怎樣識別新、舊的問題。
對於計算機來說,最可靠的推斷方式就是數字,數字有非常多優點:程序easy推斷、格式簡單不easy出錯、肉眼easy識別等。
所以Google要求每一個應用都要在APK安裝包中記錄這個安裝包的[VersionCode],僅僅要拿到這個APK文件。就能夠知道它相應的[VersionCode]是多少,應用商店就會以這個[VersionCode]為准,來推斷版本號。安裝包的[VersionCode]數字越大就越新。這樣開發人員在開發過程中,每有一個新版本號僅僅要加大一點這個數字就能夠了。比方第一個版本號的[VersionCode]是1,第二個版本號是2。由於開發人員可能每天可能會產生多個沒有公布的版本號。所以這個數字會增長的非常快。
經過一段時間的開發,這個數字會變得比較大,比方16385,這時對一個消費者,這種數字事實上不太具有可識別性,比方說Win 16385和Win 17514在傳達信息方面效果並不好,不利於產品的市場推廣。因此Google也支持在AKP安裝包內記錄[VersionName]。你能夠叫Win 7、Win Vista都沒問題。能夠滿足市場、傳播方面的需求,這樣[VersionName]事實上不具備比較新、舊版本號的能力。僅僅是用來展示給消費者看的。
綜上所述
VersionCode:對消費者不可見,僅用於應用市場、程序內部識別版本號,推斷新舊等用途。
VersionName:展示給消費者,消費者會通過它認知自己安裝的版本號。一般我們說的版本號號就是這個。
我們在運營的過程中。發現有的開發人員會遇到一些問題。
1、同一個VersionName(版本)。相應了多個VersionCode
這樣的情況非經常見,比方說新版本號公布之后,某個商店反饋說存在xxx問題,須要修復、定制等等操作。於是商務找project師出了個新版本號。考慮到是小版本號升級,版本號號沒變化,可是VersionCode已經變了。
可能遇到的問題:假設這個新版僅僅在部分商店上線。就會出現都是3.1版,A商店的版本號事實上比B商店的新。
已經安裝了新版本號的用戶。還會被提示升級,這時候用戶會困擾。為什么我裝了3.1還要升級到3.1?部分商店為了最新會抓包。導致渠道包流竄,影響運營監控和分析。
解決方式:a.版本號號應該和VersionCode一起漲。並且一旦公布新版本號,就在全部渠道上架新版。
2、公布了一個VersionCode錯誤的版本號
有時候由於project師不小心,公布了一個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版本號的用戶,可能會收到舊版本號的升級提示,比並降級回舊版
解決方式:事實上非常easy。由於VersionCode對終於用戶是不可見的。僅僅要添加就好了。上文的樣例,新版VersionCode直接取11200就齊活了。
3、公布了一個有Bug的版本號。好捉急
偶爾會遇到版本號已經公布了。第二天突然發現,糟糕,有Bug,用戶開始罵了!
於是商務同學到各家市場要求退回舊版本號。
可能遇到的問題:已經升級到有Bug版本號的用戶是無法回滾到舊版的,因此這樣直接退回舊版本號的方式對這些熱心升級的用戶是很不負責任的。
並且人肉召回的力度實在有限,這個有Bug的版本號一定會流傳的。
解決方式:最好是不要浪費時間退回舊版,趕緊修復Bug發個新版本號(記得加VersionCode),假設Bug比較棘手,臨時無法修復,僅僅能退回舊版本號。這時建議把舊版本號的VersionCode改大一些后,提交新版本號,這樣能夠保證全部用戶都能下載/升級到一個相對可靠的版本號。
以上就是關於Android應用版本號的一些建議。
希望對大家有幫助。
版權聲明:本文博客原創文章。博客,未經同意,不得轉載。