27
2017
09

android 获取当前app版本信息

获取当前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

这两个都是app的版本号,versionCode是int类型,versionName是String类型,具体根据那个作为升级的判断,根据项目的需求决定,看过网上有的用versionCode来作为升级判断的标准,也有的说是用versionName来作为升级判断的标准。

android 获取本机其他app的版本信息

上一篇:android 获取本机其他app的版本信息 下一篇:[日推荐]『美食甜品』专治不开心!