徹底解決INSTALL_FAILED_UPDATE_INCOMPATIBLE的安裝錯誤、安裝包與之前設備上的安裝包簽名不一致


有時候開發的問題:會遇到在公司上班的時候,公司的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. 重新安裝新的應用即可

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM