Android系统内置应用更新或升级后被还原的原因

转载 2016年08月30日 15:19:02

如果更新或者升级后系统内置应用,遇到重启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更新判断条件

// 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、可能导致系统内置应用无法升级,不断被还原。

相关文章推荐

如何删除Android系统中的内置应用

PS:此法是给Android开发人员的,如果只是Android爱好者,此方法可能有些难度闲话不说,直接转入正题:此法方法原理是采用手动挂载的命令是mount,然后更改权限,步骤如下:1.输入 adb ...

在Ubuntu上为Android系统内置Java应用程序测试Application Frameworks层的硬件服务

在Ubuntu上为Android系统内置Java应用程序测试Application Frameworks层的硬件服务         我们在Android系统增加硬件服务的目的是为了让应用层...

在Eclipse+ADT中开发Android系统的内置应用

http://www.iteye.com/topic/1050439 Android系统内置有:Browser(浏览器)、Mms(彩信/短信)、Phone(电话)、Contacts(联系人)...

在Ubuntu上为Android系统内置Java应用程序测试Application Frameworks层的硬件服务

我们在Android系统增加硬件服务的目的是为了让应用层的APP能够通过Java接口来访问硬件服务。那么, APP如何通过Java接口来访问Application Frameworks层提供的硬件服务...

为Android系统内置Java应用程序测试Application Frameworks层的硬件服务接口

我们在Android系统增加硬件服务的目的是为了让应用层的APP能够通过Java接口来访问硬件服务。那么, APP如何通过Java接口来访问Application Frameworks层提供的硬件服务...

在Ubuntu上为Android系统内置Java应用程序测试Application Frameworks层的硬件服务

我们在Android系统增加硬件服务的目的是为了让应用层的APP能够通过Java接口来访问硬件服务。那么, APP如何通过Java接口来访问Application Frameworks层提供的硬件服务...
  • sz_zh
  • sz_zh
  • 2012-09-22 10:58
  • 408

为Android系统内置Java应用程序测试Application Frameworks层的硬件服务

我们在Android系统增加硬件服务的目的是为了让应用层的APP能够通过Java接口来访问硬件服务。那么, APP如何通过Java接口来访问Application Frameworks层提供的硬件服务...

为Android系统内置Java应用程序测试Application Frameworks层的硬件服务

我们在Android系统增加硬件服务的目的是为了让应用层的APP能够通过Java接口来访问硬件服务。那么, APP如何通过Java接口来访问Application Frameworks层提供的硬件服务...

在Eclipse中开发Android系统的内置应用(Mms, Contacts ect)

在Eclipse+ADT中开发Android系统的内置应用   Android系统内置有:Browser(浏览器)、Mms(彩信/短信)、Phone(电话)、Contacts(联系人)等众...

在Ubuntu上为Android系统内置Java应用程序测试Application Frameworks层的硬件服务

我们在Android系统增加硬件服务的目的是为了让应用层的APP能够通过Java接口来访问硬件服务。那么, APP如何通过Java接口来访问Application Frameworks层提供的硬件服务...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)