事件背景,在一次測試的時候,自己反覆安裝解除安裝同一個應用是,有時會安裝失敗並返回INSTALL_FAILED_INSUFFICIENT_STORAGE,如下圖:
,這個是說我的手機記憶體空間不夠導致的,但是當我查詢手機空間時還很充足呢,看來並不是儲存空間導致的問題。
android APK 安裝流程
- 首次安裝應用程式時:
APK檔案會儲存在/ data / app / packageName – 1 . apk目錄下 ( 1 . apk )
- 更新應用程式時:
更新後的APK檔案儲存為:
/ data / app / packageName – 2 . apk ( 2 . apk )
第一個版本( 1 . apk )被刪除。
- 下一次更新:
新的APK被儲存為( 1 . APK )並且( 2 . APK )被刪除,然後這一直重複。
我們大多數人遇到的問題發生在應用程式更新時,但刪除舊APK失敗。這本身並未導致更新失敗,但卻導致/ data / app中有兩個APK檔案。
下次嘗試更新應用程式時,系統無法移動其臨時檔案,因為( 1 . apk )和( 2 . apk )都不是空的。
解決方法
public static Process uninstall(String packageName) {
String cmd = "pm uninstall " + packageName;
String cmd1 = "rm -rf /data/app/" + packageName + "-*"; //清除解除安裝不乾淨的問題
return Shell.execShells("su", new String[]{cmd, cmd1});
}
複製程式碼