gradle中关于 versionCode versionName 的配置
defaultConfig {
applicationId "com.ppg.simple"
minSdkVersion 19
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner
}
基本上绝大部分人的gradle刚刚创建的时候都是这样的,其中有两个属性versionCode和versionName 一开始我也搞不清楚有什么用,从名字上看似乎是版本号,和版本名
但是在我们公司的项目中基本只用改动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型判断
之后改怎么更新就看各自的需求了