AndroidManifest:VersionCode和VersionName

來源:互聯網
上載者:User

標籤:android   style   code   color   使用   檔案   


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,這樣長長一串數字對消費者毫無意義,所以在產品發布時通常會起一個更容易懂的版本。下文中會把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 7、Win Vista都沒問題,可以滿足市場、傳播方面的需求,這樣[VersionName]其實不具備比較新、舊版本的能力,只是用來展示給消費者看的。


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


我們在運營的過程中,發現有的開發人員會遇到一些問題。


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


可能遇到的問題:如果這個新版只在部分商店上線,就會出現都是3.1版,A商店的版本其實比B商店的新。已經安裝了新版本的使用者,還會被提示升級,這時候使用者會困擾,為什麼我裝了3.1還要升級到3.1?部分商店為了最新會抓包,導致渠道包流竄,影響運營監控和分析。
解決方案:a.版本號碼應該和VersionCode一起漲,而且一旦發布新版本,就在所有渠道上架新版。


2、發布了一個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就齊活了。


3、發布了一個有Bug的版本,好捉急
偶爾會遇到版本已經發布了,第二天突然發現,糟糕,有Bug,使用者開始罵了!於是商務同學到各家市場要求退回舊版本。


可能遇到的問題:已經升級到有Bug版本的使用者是無法復原到舊版的,因此這樣直接退回舊版本的方式對這些熱心升級的使用者是非常不負責任的。而且人肉召回的力度實在有限,這個有Bug的版本一定會流傳的。
解決方案:最好是不要浪費時間退回舊版,趕緊修複Bug發個新版本(記得加VersionCode),如果Bug比較棘手,暫時無法修複,只能退回舊版本,這時建議把舊版本的VersionCode改大一些後,提交新版本,這樣可以保證所有使用者都能下載/升級到一個相對可靠的版本。


以上就是關於Android應用版本的一些建議。希望對大家有協助。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.