android gradle中关于 versionCode versionName 的配置

gradle中关于 versionCode versionName 的配置

    defaultConfig {
        applicationId "com.ppg.simple"
        minSdkVersion 19
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner 
    }

基本上绝大部分人的gradle刚刚创建的时候都是这样的,其中有两个属性versionCodeversionName 一开始我也搞不清楚有什么用,从名字上看似乎是版本号,和版本名

但是在我们公司的项目中基本只用改动versionName而不改动versionCode,直到有一次一个小伙伴不小心把versionCode改成11导致了一次大bug之后我才对着两个属性研究了一番

简单的说,就是
versionCode是给程序识别用的,如果当前A手机上装有versionCode为5的app时,A下载了一个versionCode为4的新的安装包是不能安装的,会提示当前版本比较新之类的提示,不论你的versionName怎么样都不行.
当时我们的项目就是怎么弄都更新识别,后来发现了这个问题后把versionCode改成12就能更新了

versionName是给用户看的版本号,比如2.0.4这样的,同时也可以作为判断当前版本是否需要更新的依据.

    public static boolean compareVersion(String newVersion, Context context) {
        PackageInfo info = null;
        try {
            info = context.getPackageManager().getPackageInfo(context.getPackageName(), 0);
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        }
        String oldVersion = info.versionName;
        int newV = Integer.parseInt(newVersion.replace(".", ""));
        int oldV = Integer.parseInt(oldVersion.replace(".", ""));
        return newV - oldV > 0 ? true : false;
    }

这是我用来判断版本的方法.通过info = context.getPackageManager().getPackageInfo(context.getPackageName(), 0);取得版本信息后使用 int oldV = Integer.parseInt(oldVersion.replace(“.”, “”));把它转换成int型判断

之后改怎么更新就看各自的需求了

你可能感兴趣的:(android笔记)