2

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

一旦我提高了目标并编译了版本,我就用各种设备测试了这个应用程序,似乎一切都在不同的设备和模拟器上运行得很好。

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

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

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

4

3 回答 3

1

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

您可以做的验证是previous build从 Play 商店安装(使用较低的 sdk)并上传您的新版本alpha release(使用更新的目标 sdk)并将您自己添加为测试人员。当 alpha 版本上线时,它将为您提供更新应用程序的选项previous app(使用低目标 sdk)。

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

这样您就可以验证这一点。

于 2019-01-15T05:40:05.100 回答
0

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

遵循此 Office android 开发者指南

如果您不使用 Room,则不容易迁移(如果您将 db 更新到太多),请阅读此中型博客

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

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

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

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

3)制作一个签名版本(使用与 playstore apk 相同的密钥库),以便您拥有更新的版本版本。

4)将此更新版本的apk放入手机并安装/更新(确保旧版本的应用程序在那里,您从Playstore下载)。

5)现在您的应用程序已更新,您可以检查/测试您想要的任何内容。

于 2019-01-15T05:39:35.653 回答
0

如果您希望即使应用程序被删除并重新安装也能保存您的应用程序数据,您可以使用自 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>
于 2019-01-15T06:46:49.870 回答