用更新版本替换资产中的旧数据库
replace old database in assets with updated version
我有一个使用资产文件夹中的数据库 (SQLite) 的应用程序,该文件夹被复制到 android 设备上的 data/data... 文件夹中。问题在于数据库中的数据是每两个月更新一次的火车时刻表。更复杂的是,数据以五个压缩的 csv 文件的形式在线提供。我已经编写了一个 java 脚本来下载、解压缩、解析我需要的数据、构建数据库并填充它。
有没有办法更新(替换)资产文件夹中的数据库?届时,对 android 应用程序数据库的简单删除将触发新数据的副本。
真题:
- 我可以 post 一个更新的数据库来替换资产中的数据库吗?
- 我可以运行 java 脚本吗?
- 我是否需要在后台 运行 在 android 应用程序中创建一个新线程来编写整个内容?
- 在新的 APK 中手动安装数据库和post升级会更好吗?
想法?
好的,我只是将我的想法写在答案中而不是评论中。
就像 CommonsWare 所说的,您不能更新 assets/ 目录中的文件。它们是 APK 的一部分,也就是说,它们被编译到您的应用程序中,因此您可以替换整个应用程序或根本不替换任何内容。
您有一个 javascript 可以将包含火车时刻表信息文件的压缩 csv 文件转换为您的应用程序可以使用的数据库。我假设您将这个数据库文件放入 assets/ 然后构建您的应用程序。
由于您的应用程序需要经常刷新其数据,因此让您的应用程序下载它对我来说是最明显的。下载的东西应该是随时可用的数据库,而不是压缩的 csv 文件集。
您可以将压缩的 csv 文件转换为您的开发电脑上的数据库,然后将该数据库文件放在您的应用可以下载它的位置。
您的应用程序服务可以非常简单。它只需要是一个静态文件服务器,它不需要是一个 API 后端。如果您租用服务器,那么 Nginx、Apache 或 IIS 可以开箱即用。如果您将数据库文件放在 Github 或 Dropbox 上,您甚至可以不用租用服务器。
当您的应用程序启动时,它会检查是否有比当前版本更新的数据库文件版本,如果有,它会下载它。完全下载后,它可以 运行 与您现在从 assets/ 复制到 data/data 相同的代码,但它会从下载到的任何地方进行复制。
我有一个使用资产文件夹中的数据库 (SQLite) 的应用程序,该文件夹被复制到 android 设备上的 data/data... 文件夹中。问题在于数据库中的数据是每两个月更新一次的火车时刻表。更复杂的是,数据以五个压缩的 csv 文件的形式在线提供。我已经编写了一个 java 脚本来下载、解压缩、解析我需要的数据、构建数据库并填充它。
有没有办法更新(替换)资产文件夹中的数据库?届时,对 android 应用程序数据库的简单删除将触发新数据的副本。
真题:
- 我可以 post 一个更新的数据库来替换资产中的数据库吗?
- 我可以运行 java 脚本吗?
- 我是否需要在后台 运行 在 android 应用程序中创建一个新线程来编写整个内容?
- 在新的 APK 中手动安装数据库和post升级会更好吗?
想法?
好的,我只是将我的想法写在答案中而不是评论中。
就像 CommonsWare 所说的,您不能更新 assets/ 目录中的文件。它们是 APK 的一部分,也就是说,它们被编译到您的应用程序中,因此您可以替换整个应用程序或根本不替换任何内容。
您有一个 javascript 可以将包含火车时刻表信息文件的压缩 csv 文件转换为您的应用程序可以使用的数据库。我假设您将这个数据库文件放入 assets/ 然后构建您的应用程序。
由于您的应用程序需要经常刷新其数据,因此让您的应用程序下载它对我来说是最明显的。下载的东西应该是随时可用的数据库,而不是压缩的 csv 文件集。
您可以将压缩的 csv 文件转换为您的开发电脑上的数据库,然后将该数据库文件放在您的应用可以下载它的位置。
您的应用程序服务可以非常简单。它只需要是一个静态文件服务器,它不需要是一个 API 后端。如果您租用服务器,那么 Nginx、Apache 或 IIS 可以开箱即用。如果您将数据库文件放在 Github 或 Dropbox 上,您甚至可以不用租用服务器。
当您的应用程序启动时,它会检查是否有比当前版本更新的数据库文件版本,如果有,它会下载它。完全下载后,它可以 运行 与您现在从 assets/ 复制到 data/data 相同的代码,但它会从下载到的任何地方进行复制。