Android系统内置应用更新或升级后被还原的原因
16lz
2021-01-26
如果更新或者升级后系统内置应用,遇到重启Android系统后内置应用被还原,那是因为手动安装的APK版本号和系统内置API版本号一样。
<strong>1、Android系统应用更新机制</strong> 系统为每个应用在AndroidMainfest.xml提供了versionName、versionCode两个属性。 versionName:String类型,用来给应用的使用者来查看版本. versionCode:Integer类型,作为系统判断应用是否能升级的依据。
<strong>2、Android系统内置应用更新判断代码</strong> 代码来自frameworks/base/services/java/com/android/server/PackageManagerService.java 中 scanPackageLI函数的package更新判断条件(约第2580-2621行附近) // First check if this is a system package that may involve an update if (updatedPkg != null && (parseFlags&PackageParser.PARSE_IS_SYSTEM) != 0) { if (!ps.codePath.equals(scanFile)) { // The path has changed from what was last scanned... check the // version of the new path against what we have stored to determine // what to do. if (pkg.mVersionCode < ps.versionCode) {
原文地址: Android系统内置应用更新或升级后被还原的原因|http://orgcent.com/android-system-app-update-restore/
<strong>1、Android系统应用更新机制</strong> 系统为每个应用在AndroidMainfest.xml提供了versionName、versionCode两个属性。 versionName:String类型,用来给应用的使用者来查看版本. versionCode:Integer类型,作为系统判断应用是否能升级的依据。
<strong>2、Android系统内置应用更新判断代码</strong> 代码来自frameworks/base/services/java/com/android/server/PackageManagerService.java 中 scanPackageLI函数的package更新判断条件(约第2580-2621行附近) // First check if this is a system package that may involve an update if (updatedPkg != null && (parseFlags&PackageParser.PARSE_IS_SYSTEM) != 0) { if (!ps.codePath.equals(scanFile)) { // The path has changed from what was last scanned... check the // version of the new path against what we have stored to determine // what to do. if (pkg.mVersionCode < ps.versionCode) {
原文地址: Android系统内置应用更新或升级后被还原的原因|http://orgcent.com/android-system-app-update-restore/
更多相关文章
- RxJava(十)switchIfEmpty 操作符实现 Android(安卓)检查本地缓存逻
- MVP模式的Android(安卓)调用系统拍照,相册,剪裁,适配到7.0,修复拍照
- Android(安卓)8.0源码编译问题记录
- input subsystem
- Android(安卓)Widget事件
- android ListView中自定义SimpleAdapter动态添加ratingBar及图片
- android编译系统(一):GUN Make简介
- android Device Admin以及hasSystemFeature(String string)
- Android(安卓)Do not keep activities选项分析