Выпуск приложения в режиме обновления / обновления с обновлением файла базы данных SQLite - PullRequest
2 голосов
/ 17 августа 2011

Я разработал приложение для Android, которое обращается к локальной базе данных sqlite внутри приложения.

У меня вопрос о том, как обновить приложение. В этом случае, скажем, если изменяется исходный код приложения ИЛИ изменяются данные / структура базы данных, как мне упаковать эти изменения?

Должен ли я упаковать полное приложение и сделать его доступным в качестве новой версии приложения? или я могу просто упаковать только измененные файлы в гораздо меньший размер сборки и отправить его на рынок?

Как вообще выполняется процесс обновления / обновления приложения?

Ответы [ 3 ]

1 голос
/ 17 августа 2011

Если вы расширяете SQLiteOpenHelper (так и должно быть), его конструктор принимает параметр версии, который является целочисленным значением, которое вы должны определить в константе, например, DATABASE_VERSION где-то.

Переопределите метод onUpgrade и реализуйте логику для обновления вашей схемы и / или данных.

Когда вы увеличиваете постоянную DATABASE_VERSION (например, в обновлении приложения), любые существующие установки с более низкой версией будут запускать код в onUpgrade.

0 голосов
/ 17 августа 2011

В обоих случаях вы просто экспортируете новую версию своего приложения из 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(), который позволяет обновить старые базы данных пользователей до новой версии.

0 голосов
/ 17 августа 2011

Измените DATABASE_VERSION вашей базы данных, и в следующий раз вы запустите приложение БД будет воссоздан.

...