有時候開發的問題:會遇到在公司上班的時候,公司的IDE能跑程序,把程序拷貝回家,再跑一次,就會出現以下錯誤:
INSTALL_FAILED_UPDATE_INCOMPATIBLE
原因:就是你的安裝包與之前設備上的安裝包簽名不一致。百度的時候,有的人說:運行太多次也會出現上述的問題,但我沒遇到過。
簡單處理:
如果你的程序只是自己跑着玩的,不是很重要的程序,那么你就改個包名就好了。之前,我都是這樣處理的。
步驟:如圖:

但是實際工作中,是不允許我們改包名,比如關聯到了微信,支付寶,百度地圖等,我們的包名是有提交到他們的官網上的。
那么怎么辦呢?
提供一個比較坑的方法:如果是測試手機,那么格式化測試手機就好了。
以下是比較完整的一次排查過程:
問題:調試的時候,用的是默認簽名的方式(即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--文件夾)

這邊怎么跑出一個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. 重新安裝新的應用即可
