我想用一个新的(用NativeScript制作的)更新现有的Android应用程序(不是用NativeScript制作的)。
旧的应用程序在SQLite数据库中存储了一些用户数据。我希望它能够在升级中幸存下来。
现在,我在新应用程序中具有与旧应用程序相同的应用程序ID,因此该部分就位了。为了测试数据库是否仍然存在,我使用旧应用启动了Android Emulator,创建了一些记录,然后使用
发布了本机脚本版本tns run android --bundle --device=1
和此正确地替换旧的应用程序使用新的代码,但在同一时间它似乎擦拭数据库,它是否则正确地存储在/数据/数据/ 应用ID /数据库
这是否是由于进行调试的tns
部署可能导致开始擦除系统或发生其他情况?
你们如何测试呢?
编辑:显然,每次编译后进行的卸载(而不是升级)是已知的,在其Github as issue #3382
中进行了跟踪答案 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。