Android系统内置应用更新或升级后被还原的原因
来源:互联网 发布:网络萝卜是什么意思 编辑:程序博客网 时间:2024/05/22 06:45
如果更新或者升级后系统内置应用,遇到重启Android系统后内置应用被还原,那是因为手动安
装的APK版本号和系统内置API版本号一样。
1、Android系统应用更新机制
系统为每个应用在AndroidMainfest.xml提供了versionName、versionCode两个属性。
versionName:String类型,用来给应用的使用者来查看版本.
versionCode:Integer类型,作为系统判断应用是否能升级的依据。
2、Android系统内置应用更新判断代码
代码来自frameworks/base/services/java/com/android/server/PackageManagerService.java 中
scanPackageLI函数的package更新判断条件(约第25802621行附近)
// 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) {
// The system package has been updated and the code path does not match
// Ignore entry. Skip it.
从上面代码注释可以知道:更新系统内置应用时,如果新的versionCode没有大于当前安装的
版本,更新将被忽略。
3、开发者误区
对Android应用更新机制不熟悉的开发者,错误地把versionName作为应用更新的依据,以致
于在更新程序出现一些问题:
1、更新程序设计时必须把versionName设置小数形式,如2.1,当设置为2.2.1时程序就不好判
断是否该更新版本。
2、可能导致系统内置应用无法升级,不断被还原。
本文 转载来源地址:http://blog.csdn.net/mirkerson/article/details/38852637
装的APK版本号和系统内置API版本号一样。
1、Android系统应用更新机制
系统为每个应用在AndroidMainfest.xml提供了versionName、versionCode两个属性。
versionName:String类型,用来给应用的使用者来查看版本.
versionCode:Integer类型,作为系统判断应用是否能升级的依据。
2、Android系统内置应用更新判断代码
代码来自frameworks/base/services/java/com/android/server/PackageManagerService.java 中
scanPackageLI函数的package更新判断条件(约第25802621行附近)
// 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) {
// The system package has been updated and the code path does not match
// Ignore entry. Skip it.
从上面代码注释可以知道:更新系统内置应用时,如果新的versionCode没有大于当前安装的
版本,更新将被忽略。
3、开发者误区
对Android应用更新机制不熟悉的开发者,错误地把versionName作为应用更新的依据,以致
于在更新程序出现一些问题:
1、更新程序设计时必须把versionName设置小数形式,如2.1,当设置为2.2.1时程序就不好判
断是否该更新版本。
2、可能导致系统内置应用无法升级,不断被还原。
本文 转载来源地址:http://blog.csdn.net/mirkerson/article/details/38852637
1 0
- Android系统内置应用更新或升级后被还原的原因
- Android系统内置应用更新或升级后被还原的原因
- Android系统内置应用更新或升级后被还原的原因
- Android系统内置应用更新或升级后被还原的原因
- Android系统内置应用更新或升级后被还原的原因
- Android系统内置应用更新或升级后被还原的原因
- Android系统内置应用更新或升级后被还原的原因
- Android系统内置应用更新或升级后被还原的原因
- Android系统内置应用更新或升级后被还原的原因
- Android系统内置应用更新被还原
- android 系统内置应用升级
- Android系统应用手动安装升级版重启还原问题
- CloudStack VM系统被还原的原因
- 升级Win8.1或安装系统更新后导致VS无法打开工程(或未找到与约束。。)的原因和解决方法
- Android升级ADT22后会报ClassNotFoundException的原因分析
- Android升级ADT22后会报ClassNotFoundException的原因分析
- Android升级ADT22后会报 ClassNotFoundException的原因分析
- Android升级ADT22后会报ClassNotFoundException的原因分析
- Symmetry-Based Text Line Detection in Natural Scenes
- ROS Navigation-----fake_localization简介
- sql语句将一张表中的某一列插入到另一张表中
- 数据库第十四章上机练习4
- 跟我学-java源码思想系列
- Android系统内置应用更新或升级后被还原的原因
- XRecyclerView
- PorterDuffXfermode简介
- 面试题(陆续更新)
- 润乾报表中复选框的打印
- 谈谈如何使用Netty开发实现高性能的RPC服务器(十三)
- mysql分区(上篇)
- 科研杂想
- Vivado ILA调试的没有波形的小问题