1. 简介
VersionCode和VersionName是Android应用程序的两个属性。VersionCode常常用于App内部,进行版本升级时,用的就是VersionCode;VersionName用于显示,通常,用户在安装打开app后,可以看到这个版本号。
2. 设置值
在Android清单文件中或build.gradle文件中,可以设置 VersionCode和VersionName的值,例如:
android {
compileSdkVersion 30
buildToolsVersion "30.0.3"
defaultConfig {
applicationId "com.test.fragmenttest"
minSdkVersion 16
targetSdkVersion 30
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
说明:
上图是在build.gradle中的值。
3 用代码获取VersionCode和VersionName
//VersionCode和VersionName的获取:
/**
* 获取版本号
*
* @return 当前应用的版本号
*/
public static String getPackageVersionName(Context context, String pkgName) {
try {
PackageManager manager = context.getPackageManager();
PackageInfo info = manager.getPackageInfo(pkgName, 0); //PackageManager.GET_CONFIGURATIONS
return info.versionName;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
public static int getPackageVersionCode(Context context, String pkgName) {
try {
PackageManager manager = context.getPackageManager();
PackageInfo info = manager.getPackageInfo(pkgName, 0);
return info.versionCode;
} catch (Exception e) {
e.printStackTrace();
return -1;
}
}
说明:
(1)PackageManager.getPackageInfo:可以获取安装包信息,返回一个PackageInfo对象,这个对象的versionCode和versionName属性就是在build.gradle中设置的值。
(2)versionCode是一个int型的值;而versionName是一个String类型的值,通常形式是x.b.z
4 PackageInfo常用属性:
packageName 应用程序包名
versionCode 应用程序版本号
versionName 应用程序版本名称
applicationInfo 应用的application 标签下的属性
firstInstallTime 首次安装时间
lastUpdateTime 更新时间
gids linux 内核权限
activities 应用的所有activity
receivers 应用的所有广播接收者
services 应用的所有服务
providers 应用的所有内容提供者
instrumentation 用于创建activity的instrumentation
permissions 应用程序权限列表
requestedPermissions 应用程序已经申请的权限列表
requestedPermissionsFlags 应用程序已经申请的权限列表标记
signatures 应用程序的签名