获取当前app的版本信息
androidAPP升级,经常要用去比较当前app的版本号,获取当前app的版本号其实是非常简单的。代码很少,但是不用着急写代码,我们先看看build.gradle的内容。
Android Studio中有一个顶级的build.gradle文件,每一个module还有一个自己的build.gradle。这个文件是使用Groovy语法和Android Plugin for Gradle元素的配置文件。通常我们只需要修改module的build文件就可以了。
android {
compileSdkVersion 23
buildToolsVersion '25.0.0'
defaultConfig {
applicationId 'com.tgwoo.dc'
minSdkVersion 15
targetSdkVersion 23
versionCode 2
versionName "2.1"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
productFlavors {
}
//指定打包后应用名称
applicationVariants.all {variant ->
variant.outputs.each {output ->
def outputFile = output.outputFile
def fileName
if (outputFile != null && outputFile.name.endsWith('.apk')) {
if (variant.buildType.name.equals('release')) {
fileName = "com.tgwoo.dc.${defaultConfig.versionName}.apk"
} else if (variant.buildType.name.equals('debug')) {
fileName = "com.tgwoo.dc.${defaultConfig.versionName}.apk"
}
output.outputFile = new File(outputFile.parent, fileName)
}
}
}
}
ependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.2.1'
compile 'com.android.support:support-v4:23.2.1'
compile 'akinaru:http-endec:1.02'
compile 'com.google.code.gson:gson:2.4'
compile 'org.jsoup:jsoup:1.9.2'
compile 'de.mindpipe.android:android-logging-log4j:1.0.3'
compile 'log4j:log4j:1.2.17'
}
我们看几个参数:
CompileSdkVersion: 是你SDK的版本号,也就是API Level,例如
API-19、API-20、API-21等等。buildToolsVersion: 是你构建工具的版本,其中包括了打包工具aapt、dx等等。这个工具的目录位于..your_sdk_path/build-tools/XX.XX.XX这个版本号一般是API-LEVEL.0.0。 例如I/O2014大会上发布了API20对应的build-tool的版本就是20.0.0在这之间可能有小版本,例如20.0.1等等。
defaultConfig: 动态的在build时配置AndroidManifest.xml里的项目,
defaultConfig里的配置可以覆盖manifest里的配置。buildTypes: 配置如何构建和打包你的App,默认有debug和release两个类型。debug类型包含调试时的信息,并且有debug key签名。release默认是不含签名的。本例中release版本用了ProGuard。
dependencies: 在android {…}这个元素之外,配置此模块的依赖。
依赖分下面三种:
模块依赖: compile project(“:lib”),表明本模块依赖于lib模块,编译的时候系统会把lib模块包含进来
远程的二进制依赖: compile ‘com.android.support:appcompat-v7:19.0.1’,当本地没有此依赖时会默认从Maven Central Repository下载相应的依赖。从哪里下载可以在顶级的build文件中配置。
本地二进制依赖:*compile fileTree(dir: ‘libs’, include: [‘.jar’]),把jar包拷贝到/libs文件夹下,compile fileTree(dir: ‘libs’, include: [‘.jar’])意思是,app/libs下的所有jar包都包含进来Application ID: 是用来唯一标识要发行的应用的。在build.gradle里设置。
指明应用程序运行所需的最小API level。如果不指明的话,默认是1。也-- minSdkVersion: 就是说该应用兼容所有的android版本。我们应该总是声明这个属性。
- targetSdkVersion: 标明应用程序目标API Level的一个整数。如果不设置,默认值和minSdkVersion相同。这个属性通知系统,你已经针对这个指定的目标版本测试过你的程序,系统不必再使用兼容模式来让你的应用程序向前兼容这个目标版本。应用程序仍然能在低于targetSdkVersion的系统上运行。
//获取packageManager实例
PackageManager packageManager = getPackageManager();
// 获取包名
String packageName = getPackageName();
int flag = 0;
PackageInfo packageInfo = null;
// 获取packageInfo
try {
packageInfo = packageManager.getPackageInfo(packageName, flag);
} catch (NameNotFoundException e) {
e.printStackTrace();
}
// 获取packageInfo中的版本信息等信息
if (packageInfo != null) {
int versionCode = packageInfo.versionCode;
String versionName = packageInfo.versionName;
Log.i("TAG", versionCode);
Log.i("TAG", versionName );
}
1、首先获取PackageManager实例
PackageManager packageManager = getPackageManager();
2、获取应用程序的包名
String packageName = getPackageName();
3、获取packageInfo
packageInfo = packageManager.getPackageInfo(packageName, flag);
4、获取版本信息
packageInfo.versionCode
packageInfo.versionName