1. 程式人生 > >Android versionCode與versionName

Android versionCode與versionName

android:versionCode——整數值,代表應用程式程式碼的相對版本,也就是版本更新過多少次。

整數值有利於其它程式比較,檢查是升級還是降級。你可以把這個值設定為任何想設的值,但是,你必須保證後續更新版的值要比這個大。系統不會強制要求這一行為,但是隨著版本更新值也增加是正常的行為。

一般來說,你釋出的第一版程式的versionCode設定為1,然後每次釋出都會相應增加,不管釋出的內容是較大還是較小的。這意味著Android:versionCode不像應用程式的釋出版本(看下面的android:versionName)那樣顯示給使用者。應用程式和釋出的服務不應該顯示這個版本值給使用者

android:versionName——字串值,代表應用程式的版本資訊,需要顯示給使用者

與android:versionCode一樣,系統不會為了任何內部的目的使用這個值,除了顯示給使用者外。釋出的服務也需要提取這個值來顯示給使用者。

android-studio中是在build.gradle中進行設定versionCode跟versionName的,而eclipse是在androidmainfest.xml中設定

android-studio:

defaultConfig {
        versionCode 101
        versionName "1.0.1"
    }
eclipse:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.xxx.xxx"
    android:versionCode="101"
    android:versionName="1.0.1">
    ......
這裡我們可以建一個工具類進行兩個值的獲取
public class CustomUtils {

    //獲取版本號(內部識別號) = 101
    public static int getVersionCode(Context context) {
        try {
            PackageInfo pi = context.getPackageManager().getPackageInfo(context.getPackageName(), 0);
            return pi.versionCode;
        } catch (PackageManager.NameNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            return 0;
        }
    }

    //獲取版本號 = "1.0.1";
    public static String getVersion(Context context) {
        try {
            PackageInfo pi = context.getPackageManager().getPackageInfo(context.getPackageName(), 0);
            return pi.versionName;
        } catch (PackageManager.NameNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            return "未知版本";
        }
    }
}

借鑑文章: http://blog.csdn.net/zhangzhilai8/article/details/17678429

               http://dzy-123.iteye.com/blog/1886264