APK安装时原来的apk安装信息没有被清掉产生安装垃圾问题的解决办法

问题描述:

下载三个apk(http://pan.baidu.com/s/1geS25r1):

 在android5.0 及以上平台:
 1、将331.apk 替换掉系统内置的/system/vendor/app/SkyAppStore/SkyAppStore.apk ,并 rm -rf /data/data/com.tianci.appstore。rm -rf /data/app/com.tianci.appstore-xxx。 然后重启电视
 2、pm install -r /mnt/usb/sda1/523.apk,恢复出厂设置:保留应用。问题1:
 3、再次pm install -r /mnt/usb/sda1/622.apk,。 问题2:

问题:

1、电视重启后,通过pm path com.tianci.appstore发现,系统用的是system下的,而不是data下的
2、再次安装新的后,pm path com.tianci.appstore 使用的是data/app/com.tianci.appstore-2。而com.tianci.appstore-1还在。

任务:

1、查android源码,找出问题1/2的原因
2、提供解决方案:如何避免com.tianci.appstore-1垃圾的产生。

问题1产生的原因:

系统恢复出厂设置时会删除packages.xml和packages.list文件,这两个文件中记录的是系统已安装的应用信息,包括用户应用和系统应用,系统再次开机时,回会先扫描system下的app安装,之后才会扫描data下面的app进行安装,其中扫描安装过程中会调用一下两个判断(位于PackageManagerService.java):
if (mPackages.containsKey(pkg.packageName) ||  mSharedLibraries.containsKey(pkg.packageName)) {
        throw new PackageManagerException(INSTALL_FAILED_DUPLICATE_PACKAGE,"Application package " +pkg.packageName+ " already installed. Skipping duplicate.");
}
这个判断是检查该apk是否已被安装过,若已被安装过得apk包含这个apk信息,则直接抛出异常不再重复安装,所以对于系
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值