我想将目标版本和编译版本从26提高到28。这是因为用户向我发送了电子邮件,并说该应用无法在运行Andoird 9的手机上正常运行。
一旦我升级了目标版本并编译了版本,我就使用各种设备对应用程序进行了测试,看来在不同的设备和仿真器上一切都可以正常运行。
但是,我担心使用新的SDK目标和编译版本时,用户可能会在更新时丢失数据。我的DatabaseHelper类扩展了SQLiteOpenHelper。
当我使用更高的目标和编译版本进行更新时,是否需要做任何事情来确保保留其数据库表?
注意:我的数据库架构与更新完全相同。
答案 0 :(得分:1)
如果目标用户使用现有SDK(SDK较低)来更新应用程序,则更改目标SDK版本不会丢失其数据。
您可以执行以下操作来验证这是从Play商店安装previous build
(SDK较低),然后在alpha release
(具有更新的目标SDK)中上传新版本,并将自己添加为测试人员。当Alpha版本发布时,它将为您提供在previous app
(目标sdk较低)上更新应用程序的选项。
当您点击更新按钮时,您将获得结果。
这样您可以进行验证。
答案 1 :(得分:0)
如果您使用Room来处理数据库操作,则迁移非常容易
Follow this office android developer guide
如果您不使用Room,那么为此please read this medium blog
不容易迁移(如果您将数据库更新为很多)已编辑:如您所述,您对数据库没有任何更改
按照步骤进行测试,您不会丢失100%验证的数据
1)从playstore下载您的应用。
2)更改代码并在gradle中更新您的应用版本。
3)制作一个经过签名的版本(具有与playstore apk中使用的密钥库相同的密钥库),以便您拥有更新的版本。
4)将更新后的版本apk放入手机中并进行安装/更新(确保可以从Playstore下载该应用的旧版本)。
5)现在您的应用已更新,您可以检查/测试所需的任何内容。
答案 2 :(得分: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>