赞
踩
ps:我最终还是改了包名……
转载于:http://www.cnblogs.com/H-BolinBlog/p/5402652.html
有时候开发的问题:会遇到在公司上班的时候,公司的IDE能跑程序,把程序拷贝回家,再跑一次,就会出现以下错误:
INSTALL_FAILED_UPDATE_INCOMPATIBLE
原因:就是你的安装包与之前设备上的安装包签名不一致。百度的时候,有的人说:运行太多次也会出现上述的问题,但我没遇到过。
简单处理:
如果你的程序只是自己跑着玩的,不是很重要的程序,那么你就改个包名就好了。之前,我都是这样处理的。
步骤:如图:
但是实际工作中,是不允许我们改包名,比如关联到了微信,支付宝,百度地图等,我们的包名是有提交到他们的官网上的。
那么怎么办呢?
提供一个比较坑的方法:如果是测试手机,那么格式化测试手机就好了。
以下是比较完整的一次排查过程:
问题:调试的时候,用的是默认签名的方式(即debug签名),导出的时候,用的是自己的debug签名,在同一台手机上安装不上。
解决过程:
如果你以前的程序是采用默认签名的方式(即debug签名),一旦换了新的签名应用将不能覆盖安装,必须将原先的程序卸载掉,才能安装上。
——> 别人都是卸载之后就可以安装上了,但是我的手机不行。
——> 我 :卸载了旧的,也root,删掉了data/data/包名。
——> 安装提示:替换应用,销售小助手1.0替换为1.0..提示程序未安装。
——> 是不是 系统 保存了相关的 包名和签名信息 ?
——> 是的话,也百度不到这个信息放哪里了。
继续百度:发现包名信息存放在 /data/system/packages.xml 中,需要root手机才可以从手机上看到这个文件。
——> 我们删除该应用包含的包名信息就好了。
步骤:
采用 “adb uninstall 包名” 卸载之前的安装包,然后试一下是否能安装,不行再执行下一步。
在 /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--文件夹) 这边怎么跑出一个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方法。
重新安装新的应用即可
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。