当我在 google Play 商店更新时,如何确保用户保留他们的 SQLite 数据?

How do I ensure users keep their SQLite data when I update on the google play store?

我想将我的目标和编译版本从 26 提高到 28。这是因为一位用户给我发电子邮件说该应用程序无法在他运行 andoird 9 的 phone 上正常运行。

提升目标和编译版本后,我在各种设备上测试了该应用程序,似乎一切都运行在不同的设备和模拟器上都很好。

但是我担心使用新的 SDK 目标和编译版本,用户在更新时可能会丢失数据。我的 DatabaseHelper class 扩展了 SQLiteOpenHelper。

当我使用更高的目标和编译版本更新时,我是否需要做任何事情来确保它们的数据库表得到保留?

注意:我的数据库架构与更新完全相同。

如果您使用 Room 来处理数据库操作,迁移非常容易

Follow this office android developer guide

如果您不使用 Room,那么迁移起来并不容易(如果您更新数据库很多)please read this medium blog

已编辑:正如您提到的,您没有对数据库进行任何更改

100%验证不会丢失数据可以按照以下步骤进行测试

1) 从 Playstore 下载您的应用程序。

2) 在 gradle 中更改代码并更新您的应用程序版本。

3) 进行签名构建(使用与 Playstore apk 中使用的密钥库相同的密钥库),以便您拥有更新版本的构建。

4) 将此更新版本的 apk 放入 phone 和 install/update(确保那里有旧版本的应用程序,您可以从 playstore 下载)。

5)现在您的应用已更新,您可以check/test随心所欲。

更改目标SDK版本不会丢失现有用户的数据,如果他们更新现有的应用程序(使用较低的sdk)。

您可以通过从 Play 商店安装 previous build(具有较低的 sdk)并在 alpha release(具有更新的目标 sdk)中上传您的新版本并将您自己添加为测试员。当 alpha 版本上线时,您可以选择在 previous app(使用低目标 sdk)上更新应用程序。

当您点击更新按钮时,您将获得结果。

这样你可以验证一下。

如果您希望即使应用被删除并再次安装也能保存您的应用数据,您可以使用自 android 6.0

起可用的备份功能

将这些行添加到 <application> 标记内的清单中:

android:allowBackup="true"
android:fullBackupContent="true"

最终结果应该是这样的:

<application
        android:name="your.app.bundle"
        android:allowBackup="true"
        android:fullBackupContent="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme">
        <activity  />
        <activity  />
    </application>