2

我正在寻找一个带有 android 应用程序的大型 sqlite 数据库,大约 200-300MB。根据我的阅读,我的选择是将它放在资产文件夹中,并在运行时将其处理出来,从而导致重复数据,或者在运行时从 Web 下载数据库。我不想为这个应用程序创建一个网络服务器,所以我想创建一个单独的应用程序来安装数据库来解决数据重复问题。

所有这些都很糟糕,我想知道是否有更好的解决方案?

4

2 回答 2

3

首先,我认为您不允许将 200-300MB 的数据库放在资产文件夹中并将其作为单个 apk 分发,因为 apk 文件大小的硬限制是(根据谷歌的文档)50 MB,我怀疑您的数据库将压缩到那么远。Google 引入了“APK 扩展文件”,用于使用您的 apk 打包大文件。您可以在此处阅读所有相关信息:http: //developer.android.com/google/play/expansion-files.html

我认为(但我自己没有扩展文件的经验)这不会解决您提到的由于需要复制数据库文件而必须处理重复数据的问题,但至少在某种意义上这会对您有所帮助您不必在自己的网络服务器上托管数据库文件。我快速浏览了我上面给出的链接上的文档,它清楚地指出,当你完成扩展文件时,你不应该扔掉它们,所以这部分没有帮助。

当然,对于“设置自己的网络服务器部分”:我什至不会费心设置自己的网络服务器。有很多派对可以为您提供一些文件托管服务。可能您将不得不为带宽付费,但是嘿..如果人们下载您的数据库文件很多,这也意味着您的应用程序运行良好;-)

于 2013-03-14T12:41:30.350 回答
0

我测试apk 扩展文件。我创建了一个带有 100 MB sqlite 数据库的测试应用程序,将 apk 和数据库上传到 Play 商店。然后我将应用程序下载到手机上,同时下载了数据库。数据库被自动重命名并放置在可公开访问的目录中:

/storage/sdcard0/Android/obb/com.example.app/main.1.com.example.app.obb

该应用程序能够毫无问题地打开数据库,但需要外部读写权限。新的和原来的数据库是一点一点的,一样的。这似乎是我用例的最佳解决方案。

几个问题,新的android开发者控制台不支持上传扩展文件,所以需要使用旧的。Google 只允许 2 个扩展文件,因此对于某些用例来说这可能是个问题。谷歌说你不能重命名或删除文件,如果文件没有自动安装,你的应用必须能够从谷歌本身下载文件。

于 2013-03-15T23:15:55.013 回答