小米應(yīng)用商店:VersionCode和VersionName

來源: 小米開放平臺
作者:小米開放平臺
時間:2021-02-03
17363
各位Android應(yīng)用開發(fā)愛好者和運營團隊在小米應(yīng)用商店的運營中,常常遇到因為不明白一些Android的概念而造成的困擾。因此本文準備了一些基礎(chǔ)知識。

5f0fc5548aa14.jpg

各位Android應(yīng)用開發(fā)愛好者和運營團隊在小米應(yīng)用商店的運營中,常常遇到因為不明白一些Android的概念而造成的困擾。因此我們準備了一些基礎(chǔ)知識。

一、簡單講講

Google為APK定義了兩個屬性:VersionCode和VersionName,他們有不同的用途。

·VersionCode:對消費者不可見,僅用于應(yīng)用市場、程序內(nèi)部識別版本,判斷新舊等用途。

·VersionName:展示給消費者,消費者會通過它認知自己安裝的版本,下文提到的版本號都是說VersionName。

結(jié)尾有三個常見問題的解決方案

·同一個版本號,對應(yīng)了多個VersionCode怎么辦

·發(fā)布了一個VersionCode錯誤的版本怎么辦

·發(fā)出去的應(yīng)用有Bug要換回舊版,怎么操作?

二、然后講講前因后果

大家在使用軟件和應(yīng)用時,都會涉及到版本的概念,大家都知道的,比如Win XP,QQ2012,小米桌面1.6。之所以會有版本,主要是因為軟件產(chǎn)品一直在發(fā)展、變化的。版本的概念可以幫助消費者識別不同時期的產(chǎn)品。

而展現(xiàn)在消費者面前的版本,和開發(fā)者內(nèi)部使用的通常是不同的版本。開發(fā)時通常會使用數(shù)字作為標志,比如6.1.7600.16385,其實是Win 7第一個正式版的版本號,而Win 7 SP1的版本號是6.1.7601.17514,這樣長長一串數(shù)字對消費者毫無意義,所以在產(chǎn)品發(fā)布時通常會起一個更容易懂的版本。下文中會把Win 7這樣的用于展示的版本叫做[VersionName],6.1.7601.17514這樣用于程序標識的版本叫做[VersionCode]

早年因為軟件主要自己負責自己的分發(fā)、升級等方面,所以版本號也相當自由,各家都有不同的規(guī)范。但是近年來移動設(shè)備崛起,AppStore這樣的應(yīng)用商店集中分發(fā)成了主流。以升級為例,應(yīng)用商店會負責檢查消費者手機上應(yīng)用的版本,并和商店里面最新的版本比較,如果商店里面的版本比較新,消費者手機上的版本比較舊,就會提醒消費者升級。

這就涉及到如何識別新、舊的問題。對于計算機來說,最可靠的判斷方式就是數(shù)字,數(shù)字有很多好處:程序容易判斷、格式簡單不容易出錯、肉眼容易識別等。所以Google要求每個應(yīng)用都要在APK安裝包中記錄這個安裝包的[VersionCode],只要拿到這個APK文件,就可以知道它對應(yīng)的[VersionCode]是多少,應(yīng)用商店就會以這個[VersionCode]為準,來判斷版本。安裝包的[VersionCode]數(shù)字越大就越新。這樣開發(fā)者在開發(fā)過程中,每有一個新版本只要加大一點這個數(shù)字就可以了。比如第一個版本的[VersionCode]是1,第二個版本是2。因為開發(fā)者可能每天可能會產(chǎn)生多個沒有發(fā)布的版本,所以這個數(shù)字會增長的很快。

經(jīng)過一段時間的開發(fā),這個數(shù)字會變得比較大,比如16385,這時對一個消費者,這樣的數(shù)字其實不太具有可識別性,比如說Win 16385和Win 17514在傳達信息方面效果并不好,不利于產(chǎn)品的市場推廣。因此Google也支持在AKP安裝包內(nèi)記錄[VersionName],你可以叫Win 7、Win Vista都沒問題,可以滿足市場、傳播方面的需求,這樣[VersionName]其實不具備比較新、舊版本的能力,只是用來展示給消費者看的。

綜上所述VersionCode:對消費者不可見,僅用于應(yīng)用市場、程序內(nèi)部識別版本,判斷新舊等用途。VersionName:展示給消費者,消費者會通過它認知自己安裝的版本。一般我們說的版本號就是這個。

三、我們在運營應(yīng)用商店的過程中,發(fā)現(xiàn)有的開發(fā)者會遇到一些問題

1、同一個VersionName(版本號),對應(yīng)了多個VersionCode這種情況很常見。比如說新版本發(fā)布之后,某個商店反饋說存在xxx問題,需要修復(fù)、定制等等操作,于是商務(wù)找工程師出了個新版本,考慮到是小版本升級,版本號沒變化,但是VersionCode已經(jīng)變了。

·可能遇到的問題:如果這個新版只在部分商店上線,就會出現(xiàn)都是3.1版,A商店的版本其實比B商店的新。已經(jīng)安裝了新版本的用戶,還會被提示升級,這時候用戶會困擾,為什么我裝了3.1還要升級到3.1?部分商店為了最新會抓包,導(dǎo)致渠道包流竄,影響運營監(jiān)控和分析。

·解決方案:a.版本號應(yīng)該和VersionCode一起漲,而且一旦發(fā)布新版本,就在所有渠道上架新版。

2、發(fā)布了一個VersionCode錯誤的版本有時候因為工程師不小心,發(fā)布了一個VersionCode過大的版本。比如1.1.1.20版本的VersionCode寫成了111,而1.1.1.27版本的VersionCode寫成了11127,但是后面發(fā)布1.1.2版希望延續(xù)舊的VersionCode,用112。

·可能遇到的問題:1.1.1.27版的用戶將無法獲得1.1.2版本的升級,因為在程序看來1.1.1.27版本是比較新的,同時,已經(jīng)使用了1.1.2版本的用戶,可能會收到舊版本的升級提示,比并降級回舊版

·解決方案:其實很簡單,因為VersionCode對最終用戶是不可見的,只要增加就好了,上文的例子,新版VersionCode直接取11200就齊活了。

3、發(fā)布了一個有Bug的版本,好捉急偶爾會遇到版本已經(jīng)發(fā)布了,第二天突然發(fā)現(xiàn),糟糕,有Bug,用戶開始罵了!于是商務(wù)同學(xué)到各家市場要求退回舊版本。

·可能遇到的問題:已經(jīng)升級到有Bug版本的用戶是無法回滾到舊版的,因此這樣直接退回舊版本的方式對這些熱心升級的用戶是非常不負責任的。而且人肉召回的力度實在有限,這個有Bug的版本一定會流傳的。

·解決方案:最好是不要浪費時間退回舊版,趕緊修復(fù)Bug發(fā)個新版本(記得加VersionCode),如果Bug比較棘手,建議把舊版本的VersionCode改大一些后,提交新版本,這樣可以保證所有用戶都能下載/升級到一個相對可靠的版本。

以上就是關(guān)于Android應(yīng)用版本的一些建議。希望對大家有幫助。

立即登錄,閱讀全文
版權(quán)說明:
本文內(nèi)容來自于小米開放平臺,本站不擁有所有權(quán),不承擔相關(guān)法律責任。文章內(nèi)容系作者個人觀點,不代表快出海對觀點贊同或支持。如有侵權(quán),請聯(lián)系管理員(zzx@kchuhai.com)刪除!
掃碼登錄
打開掃一掃, 關(guān)注公眾號后即可登錄/注冊
加載中
二維碼已失效 請重試
刷新
賬號登錄/注冊
個人VIP
小程序
快出海小程序
公眾號
快出海公眾號
商務(wù)合作
商務(wù)合作
投稿采訪
投稿采訪
出海管家
出海管家