10-2.Android BuildConfig 之获取版本号与版本名(通过 BuildConfig 类方式获取、通过 PackageInfo 方式获取)

一、版本号与版本名

  1. 版本号(versionCode)是一个整数,用于内部版本控制,每次发布新版本时,版本号必须递增,Android 系统使用版本号来判断应用的更新

  2. 版本名(versionName)是一个字符串,通常用于向用户展示应用的版本信息,它可以是任意格式,常见的格式是 主版本号.次版本号.修订号(例如,1.0.0


二、定义版本号与版本名

  1. 在模块级 build.gradle 文件中,定义版本号与版本名
android {
	...

    defaultConfig {
        applicationId "com.my.buildconfig"
        minSdk 24
        targetSdk 34
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    ...
}
  1. 与之对应的,生成的 BuildConfig 类如下
/**
 * Automatically generated file. DO NOT MODIFY
 */
package com.my.buildconfig;

public final class BuildConfig {
  public static final boolean DEBUG = Boolean.parseBoolean("true");
  public static final String APPLICATION_ID = "com.my.buildconfig";
  public static final String BUILD_TYPE = "debug";
  public static final int VERSION_CODE = 1;
  public static final String VERSION_NAME = "1.0";
}

三、获取版本号与版本名

1、基本介绍
  1. 通过 BuildConfig 类获取版本号与版本名,与通过 PackageInfo 获取版本号与版本名,是相同的

  2. 它们都来自于模块级 build.gradle 文件中,定义的版本号与版本名

  3. 推荐通过 BuildConfig 类获取版本号与版本名,简单且高效

2、二者区别
(1)通过 BuildConfig 类方式获取
  1. BuildConfig 类中的版本号与版本名,是在编译时生成的常量

  2. 值是从模块级 build.gradle 文件中提取的

(2)通过 PackageInfo 方式获取
  1. PackageInfo 中的版本号与版本名,是通过运行时从 AndroidManifest.xml 文件中读取的

  2. AndroidManifest.xml 文件中的版本号与版本名,是从模块级 build.gradle 文件中提取并生成的

3、演示
  1. 在 Activity 中,通过 BuildConfig 类获取版本号与版本名
// 获取版本号
int versionCode = BuildConfig.VERSION_CODE;

// 获取版本名
String versionName = BuildConfig.VERSION_NAME;

Log.i(TAG, String.valueOf(versionCode));
Log.i(TAG, versionName);
  1. 在 Activity 中,通过 PackageInfo 获取版本号与版本名
try {

    // 获取 PackageManager 实例
    PackageManager packageManager = getPackageManager();

    // 获取当前应用的包名
    String packageName = getPackageName();

    // 获取 PackageInfo
    PackageInfo packageInfo = packageManager.getPackageInfo(packageName, 0);

    // 获取版本号
    int versionCode = packageInfo.versionCode;

    // 获取版本名
    String versionName = packageInfo.versionName;

    Log.i(TAG, "Version Code: " + versionCode);
    Log.i(TAG, "Version Name: " + versionName);
} catch (PackageManager.NameNotFoundException e) {
    e.printStackTrace();
}

四、AndroidManifest.xml 文件中的版本号与版本名(补充)

AndroidManifest.xml 文件中的版本号与版本名,是从模块级 build.gradle 文件中提取并生成的

  1. 在模块级 build.gradle 文件中,定义版本号与版本名
android {
    defaultConfig {
        versionCode 1
        versionName "1.0"
    }
}
  1. 在构建过程中,Gradle 会将模块级 build.gradle 文件中版本号与版本名的注入到 AndroidManifest.xml 文件中

<manifest
    xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.my.buildconfig"
    android:versionCode="1"
    android:versionName="1.0">

	...
manifest>

你可能感兴趣的:(Android,-,简化编程,开发语言,java-ee,java,android,android-studio,android,studio,android,runtime)