如何在保留旧应用程序数据的同时将Android本机应用程序升级到基于NativeScript的新版本?

时间:2019-02-01 12:49:32

标签: nativescript

我想用一个新的(用NativeScript制作的)更新现有的Android应用程序(不是用NativeScript制作的)。

旧的应用程序在SQLite数据库中存储了一些用户数据。我希望它能够在升级中幸存下来。

现在,我在新应用程序中具有与旧应用程序相同的应用程序ID,因此该部分就位了。为了测试数据库是否仍然存在,我使用旧应用启动了Android Emulator,创建了一些记录,然后使用

发布了本机脚本版本
tns run android --bundle --device=1

和此正确地替换旧的应用程序使用新的代码,但在同一时间它似乎擦拭数据库,它是否则正确地存储在/数据/数据/ 应用ID /数据库

这是否是由于进行调试的tns部署可能导致开始擦除系统或发生其他情况?

你们如何测试呢?

编辑:显然,每次编译后进行的卸载(而不是升级)是已知的,在其Github as issue #3382

中进行了跟踪

1 个答案:

答案 0 :(得分:1)

tns run android --bundle生成的APK开发版本与使用本机Android构建的APK生产版本的签名不匹配。

如果您在运行应用程序/构建{N}版本的APK时使用与生产本机应用程序相同的签名证书,则默认情况下您将在升级后幸免。

因此您的命令可能类似于

tns [build|run] android --bundle --release --keyStorePath /path/to/keystore --keyStorePassword keystore-password --keyStoreAlias keystore-alias --keyStoreAliasPassword keystore-alias-passwrd

详细了解docs.

编辑:CLI似乎带有tns run的{​​{3}},而不是替换APK,而是删除了旧版本并安装了新版本。因此,当您发布使用tns build构建的APK时,应该不会有问题。归功于@DimitarTachev。