彻底解决INSTALL_FAILED_UPDATE_INCOMPATIBLE的安装错误、安装包与之前设备上的安装包签名不一致

摘要:
------˃其他人可以在卸载后安装,但我的手机不能。-------˃安装提示:替换应用程序,并将销售助手1.0替换为1.0。提示程序未安装。-------˃系统是否保存了相关的包名和签名信息?-------˃只需删除应用程序中包含的包名称信息。步骤:1.使用“adbuninstall包名称”卸载以前的安装包,然后尝试是否可以安装。如果没有,请转到下一步。

有时候开发的问题:会遇到在公司上班的时候,公司的IDE能跑程序,把程序拷贝回家,再跑一次,就会出现以下错误:

INSTALL_FAILED_UPDATE_INCOMPATIBLE

原因:就是你的安装包与之前设备上的安装包签名不一致。百度的时候,有的人说:运行太多次也会出现上述的问题,但我没遇到过。

简单处理

如果你的程序只是自己跑着玩的,不是很重要的程序,那么你就改个包名就好了。之前,我都是这样处理的。

步骤:如图:

彻底解决INSTALL_FAILED_UPDATE_INCOMPATIBLE的安装错误、安装包与之前设备上的安装包签名不一致第1张

但是实际工作中,是不允许我们改包名,比如关联到了微信,支付宝,百度地图等,我们的包名是有提交到他们的官网上的。

那么怎么办呢?

提供一个比较坑的方法:如果是测试手机,那么格式化测试手机就好了。

以下是比较完整的一次排查过程:

问题:调试的时候,用的是默认签名的方式(即debug签名),导出的时候,用的是自己的debug签名,在同一台手机上安装不上。

解决过程:

如果你以前的程序是采用默认签名的方式(即debug签名),一旦换了新的签名应用将不能覆盖安装,必须将原先的程序卸载掉,才能安装上。

------> 别人都是卸载之后就可以安装上了,但是我的手机不行。

------> 我 :卸载了旧的,也root,删掉了data/data/包名。

------> 安装提示:替换应用,销售小助手1.0替换为1.0..提示程序未安装。

------> 是不是 系统 保存了相关的 包名和签名信息 ? 

------> 是的话,也百度不到这个信息放哪里了。

继续百度:发现包名信息存放在 /data/system/packages.xml 中,需要root手机才可以从手机上看到这个文件。

------> 我们删除该应用包含的包名信息就好了。

步骤:

1. 采用 "adb uninstall 包名"  卸载之前的安装包,然后试一下是否能安装,不行再执行下一步。 --- 正常,执行这步就能解决问题

2. 在 /data/system/packages.xml 文件中删除该应用包含的包名信息就好了

   2.1 我的做法:root手机,我的是魅族,直接可以root。之后安装RE管理器,进入/data/system/packages.xml把该文件复制到其他地方,共享到电脑,电脑上修改后,在覆盖原文件。

   参考做法:我的手机不行。 -- 都要root手机

   2.2 使用adb pull命令将这个文件导出,修改完,并用 adb push导入。

   2.3 上述步骤不行,先adb remount (意思是 重新挂载系统分区)再adb pull命令将这个文件导出,修改完,并用 adb push导入。

   2.4 上述步骤不行,

         ---> 执行  adb shell  命令  -- 执行的是Linux的命令

         ---> su (手机应该会弹出权限信息提示~~告诉你需要管理权限,并确认)  -- 获得超级权限

         ---> ls -l (查看当前目录下所有可见文件的详细属性)  drwxrwx--x   (d--文件夹)

                彻底解决INSTALL_FAILED_UPDATE_INCOMPATIBLE的安装错误、安装包与之前设备上的安装包签名不一致第2张

               这边怎么跑出一个system?回答:没有听说过Android除了Root还有system权限  你说的是user权限吧

               参考:http://bbs.csdn.net/topics/360175988

         ---> mount -o remount,rw /data (重新将文件夹为可读可写。)  我的手机出现( Operation not permitted),没办法下一步

         ---> chmod 777 /data 

         或者参考别人的做法:http://blog.sina.com.cn/s/blog_4ba5b45e0102ek4k.html 

   2.5 在不行,使用2.1方法。

3. 重新安装新的应用即可

参考:http://blog.csdn.net/philofly/article/details/8090210

免责声明:文章转载自《彻底解决INSTALL_FAILED_UPDATE_INCOMPATIBLE的安装错误、安装包与之前设备上的安装包签名不一致》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇从零开始配置TypeScript + React + React-Router + Redux + Webpack开发环境什么时候该用NoSQL?下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

转载:嵌入式C语言面试题(二)

BSS段 是“Block Started by Symbol”的缩写,意为“以符号开始的块”。   BSS是Unix链接器产生的未初始化数据段。其他的段分别是包含程序代码的“text”段和包含已初始化数据的“data”段。BSS段的变量只有名称和大小却没有值。此名后来被许多文件格式使用,包括PE。“以符号开始的块”指的是编译器处理未初始化数据的地方。BS...

Java编程:根据给定的日期,计算两个日期之间的时间差

计算两个Date之间的时间差,基本思路为把Date转换为ms(微秒),然后计算两个微秒时间差。 时间的兑换规则如下: 1s秒 = 1000ms毫秒 1min分种 = 60s秒 1hours小时 = 60min分钟 1day天 = 24hours小时   package com.qiyadeng.date; import java.text.SimpleDa...

关于jQuery中的attr和data问题

今天在使用data获取属性并且赋值时遇到一个小问题,写下来防止以后再跳坑。 在使用jQuery获取自定义属性值时,我们习惯用 $(selector).attr('data-value'); jQuery赋值: $(selector).attr('data-value','123456'); 而data的取值: $(selector).data('value...

sudo配置临时取得root权限

sudo配置临时取得root权限系统中的普通用户有时需要root权限执行某种操作,要是使用su - root的话必须要知道root的密码,这是不安全的,所以有了sudo,root可以对/etc/sudoers做一定的配置,让普通用户在不切换到root的情况下,执行一些只有root才能执行的操作。这个文件只能root去修改,建议使用visudo这个命令修改,...

jsonp 请求和回传实现

  JSONP最主要的是可以解决跨域问题,不然谁会没事用这种格式。   下面是我用JSONP的一些心得体会:  JSONP是JSON with Padding的略称。它是一个非官方的协议,它允许在服务器端集成Script tags返回至客户端,通过javascript callback的形式实现跨域访问。对,它就是一种协议,不是数据格式,开始我也被 dat...

vps安全设置

适合新手及才接触VPS的朋友们看一下。主要是关于VPS安全方面相关内容的 禁止ROOT登陆 保证安全性。 使用DDoS deflate简单防攻击。 iftop Linux流量监控工具; 每日自己主动备份VPS到FTP空间。 升级LNMP的NGINX到最新版。 一、改动SSHport vi /etc/ssh/sshd_config 找到当中...