Apk 版本号
可在AndroidManifest和BuildConfig中配置VersionName及VersionCode。 BuildConfig中会覆盖AndroidManifest中版本号,并在Apk中最终体现在Manifest文件中。 如果不声明versionCode及versionName,则versionCode=0,versionName为null。
系统预装应用
如果/system/app下APK,在data/data中再安装相同版本, 4.4版本最终使用之前预装版本,7.0版本使用新安装版本。 原因为frameworks/base/services/java/com/android/server/pm/PackageManagerService.java 该类对预装应用版本号判断有改动。
PackageManagerService_4.4.java
VersionCodeMajor
Android9.0加入VersionCodeMajor,用于支持更多位数版本号,用高32位标识VersionCodeMajor。如果targetSdkVersion>=28,则versionCode会提示已过期。 建议使用*getLongVersionCode()*代替。