最近有個項目需要用 Python 調用 Adb install 進行 APK的安裝。可是會經常發現 APK 不能正常安裝,錯誤提示為 INSTALL_FAILED_INSUFFICIENT_STORAGE。 解決了這個問題之后順便寫個筆記記錄一下。
Why
其實,在應用第一次安裝的時候,APK 文件會被保存在如下路徑中:
/data/app/<package-name>-1.apk
當這個 APK 文件更新,需要重新安裝之后, APK 會重新被保存在相同的目錄中,但是文件的序號會相應增加。然后之前一個版本的 APK -1.apk
文件會被刪除。
/data/app/<package-name>-2.apk
如果這時又有了一個新版本的 APK 需要安裝,那么這個文件又會被保存為 -1.apk
, 相應的,-2.apk
也會被刪除。以此類推,如果又有新的 APK, 那么這個邏輯會一直交替下去。
而 INSTALL_FAILED_INSUFFICIENT_STORAGE 錯誤發生的情況中,大部分是因為 APK 更新之后, /data/app/
里的文件刪除失敗, -1.apk
和 -2.apk
殘留導致的。
Solution
所以,很簡單,在安裝之前先清除 /data/app/
下對應包名的文件就好了。解決方法如下:
adb shell pm uninstall <full.packge.name>
adb shell rm -rf /data/app/<full.package.name>-*