Android覆蓋安裝及常遇到的問題


Android 覆蓋安裝

a. 覆蓋安裝apk文件后,shared_prefs中的數據不會丟失,數據庫表中的數據也不會丟失。
b. 升級數據庫的方法

0 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)

這個方法會在你做任何的數據庫操作之前執行。就是說任何數據庫操作之前都會先升級數據庫,再進行操作。

c. 安裝apk時,系統pm會將當前的apk重命名,並復制到data/app/路徑下,並刪除之前版本的apk。

覆蓋安裝引起問題的原因:

1. 數據庫表結構的變動(增加一個字段,減少一個字段,甚至是新表的建立)。

數據庫結構修改必須升級數據庫版本,並對相應版本進行處理。此外,任何在發版之前修改數據庫表結構的行為都是不可取的,即使是很簡單的邏輯。

2. 數據與當前版本的不匹配(數據超出上限或下限),會引發邏輯出錯、數組越界等問題

有任何數組結構的修改,無論是增加還是減小了數組,都要進行容錯處理。

另外,在覆蓋安裝時會發現,部分手機在覆蓋安裝老版本的app時,出現“INSTALL_FAILED_VERSION_DOWNGRADE”錯誤,這個問題僅出現在Android 4.2及以上版本,經查閱Android源碼,發現在4.2版本之后加入了驗證,不允許覆蓋安裝versioncode比當前版本低的apk。如果想使用低版本,只能先卸載再安裝(這對開發者來說是非常友好的)。

 

出處:http://blogs.360.cn/360qtest/2014/03/11/android覆蓋安裝及遇到的問題/


免責聲明!

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



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