【问题标题】:how to access Pre populated database directly from apk?如何直接从 apk 访问预先填充的数据库?
【发布时间】:2011-07-22 12:08:38
【问题描述】:

我有大约 25 MB 的预填充数据库,需要将其从 assets 文件夹复制到 data/data/packagename/ 以从代码访问数据库。

我的问题是当我将 apk 文件从手机内存转移到 sd 卡时,它提供了以下信息:

Total storage used: 27.54Mb
Application: 892Kb
Data: 26.67Mb

如果我运行应用程序,数据库会从 apk 文件(从资产文件夹)复制到手机内存中的指定路径,并且数据库太大以至于设备变慢。最终存在重复的数据库,一个在手机内存中,一个在 sdcard 上的 apk 文件中。

所以我的问题是我可以直接从 apk 文件访问预填充的数据库而不复制到任何其他地方吗?请帮帮我。

注意:我已将数据库拆分为 26 个部分,因为资产文件夹不占用 >1.5 MB 的文件。所以我需要拆分整个数据库。

【问题讨论】:

  • 可以远程使用这个数据库吗?
  • 否,因为此数据库会定期从远程数据库更改,并且会定期增加大小。
  • 我和你一样开发应用程序,巨大的数据库,然后和一位安卓软件工程师交谈,他说手机更便宜更好的是远程数据库。您仍然从另一个数据库收集数据,您可以再次远程创建您的数据库,它仍然会收到收集的数据。这只是一个想法。对于您的问题,除非您不将其写入某处或将其保存在内存中,否则您无法直接从 apk 文件中填充它。

标签: android sqlite memory


【解决方案1】:

我可以直接从 apk 文件访问预填充的数据库而不复制到任何其他地方吗?

不,对不起。

【讨论】:

  • 那么我是否有最后一个选项将数据库从资产文件夹复制到 sdcard(我不想将数据库存储在手机内存中,因为将来可能会增加大小)并从那里访问?如果是,我担心任何人都可以通过挂载 sdcard 来访问该数据库。
  • @Jignesh Brahmkhatri:“我还有最后一个选项可以将数据库从资产文件夹复制到 SD 卡”——当然。 “如果是,我担心任何人都可以通过挂载 sdcard 来访问该数据库。” -- 用户可以访问您的数据库,无论您将其存储在何处。如果用户不应该访问数据库,则设备上没有数据库。
  • 但是我可以应用任何加密,打开应用程序后,数据库将被解密,关闭应用程序后,数据库将被加密吗?
  • @Jignesh Brahmkhatri:只有你自己这样做。这无济于事,因为任何人都可以获取您的加密算法和密钥。
  • 谢谢@CommonsWare,我会调查它,但对我来说,现在不可能再次移动到远程服务器。我现在需要根据客户的要求将数据库复制到 sdcard 中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-30
  • 1970-01-01
  • 2017-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多