我開發了一個可訪問應用程序內部本地sqlite數據庫的android應用程序。在更新/升級模式下使用SQLite數據庫文件更新發布應用程序
我有一個如何升級應用程序的問題。在這種情況下,例如,如果應用程序源代碼發生更改或者數據庫數據/結構發生更改,那麼如何打包這些更改?
我是否必須重新打包完整的應用程序並將其作爲新的應用程序版本提供?或者我可以只將更改後的文件打包成更小的版本並推向市場?
一般來說,應用程序升級/更新過程是如何進行的?
我開發了一個可訪問應用程序內部本地sqlite數據庫的android應用程序。在更新/升級模式下使用SQLite數據庫文件更新發布應用程序
我有一個如何升級應用程序的問題。在這種情況下,例如,如果應用程序源代碼發生更改或者數據庫數據/結構發生更改,那麼如何打包這些更改?
我是否必須重新打包完整的應用程序並將其作爲新的應用程序版本提供?或者我可以只將更改後的文件打包成更小的版本並推向市場?
一般來說,應用程序升級/更新過程是如何進行的?
更改你的數據庫的DATABASE_VERSION,下次你將啓動應用程序 數據庫將被重新創建。
對於這兩者,基本上只需從Eclipse導出新版本的應用程序,然後通過市場帳戶上傳新APK。
應用程序版本更改由清單中的標記處理:android:versionCode
。每次導出更新的APK時,都需要增加版本代碼。 versionName
只是向市場上的用戶展示的標籤,所以可以是任何你喜歡的。
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.package"
android:installLocation="auto"
android:versionCode="17"
android:versionName="0.74">
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="12" />
<uses-permission
android:name="android.permission.INTERNET"></uses-permission>
...
至於數據庫,最簡單的方法就是子類SQLiteOpenHelper。然後,在你的子類,你可以有這樣的事情:
private class DBHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "mydatabase.db";
private static final int DATABASE_VERSION = 45;
public DBHelper(Context context)
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
...
的SQLiteOpenHelper處理打開數據庫和更新應用程序啓動時。在上面的例子中,數據庫版本是45.如果增加這個數值,並且上傳一個新的APK到市場,調用onUpgrade()
方法,它允許你將用戶的舊數據庫更新到你的新版本。
如果你正在擴展SQLiteOpenHelper
(你應該是),它的構造函數需要一個版本參數,它是一個整數值,你應該在一個常量中定義一個像DATABASE_VERSION
的地方。
覆蓋onUpgrade
方法並實現升級架構和/或數據的邏輯。
當您增加DATABASE_VERSION
常量(例如在應用程序更新中)時,任何具有較低版本的現有安裝將激發onUpgrade
中的代碼。
重新包裝...爲什麼?有人可以只下載新版本... – Selvin 2011-08-17 12:26:28