我正在寻找一个带有Android应用程序的大型sqlite数据库,大约200-300MB。根据我的阅读,我的选择是将它放在assets文件夹中,并在运行时将其复制出来,从而导致重复数据,或者在运行时从Web下载数据库。我不想为这个应用程序创建一个Web服务器,所以我想创建一个单独的应用程序,只安装数据库来解决数据重复问题。
所有这些都非常糟糕,我想知道是否有更好的解决方案?
答案 0 :(得分:3)
首先,我不认为您可以在资产文件夹中放置200-300MB的数据库并将其作为单个apk分发,因为apk文件大小的硬限制是(根据谷歌和#39 ; s文档)50 MB,我怀疑你的数据库将压缩到那么远..谷歌推出了" APK扩展文件"用你的apk打包大文件。您可以在此处阅读所有相关内容:http://developer.android.com/google/play/expansion-files.html
我认为(但我自己没有使用扩展文件的经验)这不会解决您提到的因为需要复制数据库文件而必须处理重复数据的问题,但至少这会对您有所帮助从某种意义上说,您不必在自己的网络服务器上托管数据库文件。我快速扫描了上面给出的链接上的文档,它清楚地表明你完成后不应该丢弃扩展文件,所以没有帮助。
当然,对于"设置自己的网络服务器部分":我甚至不打扰设置我自己的网络服务器。有很多派对为您提供一些文件托管服务。可能你需要为带宽付费,但是嘿..如果人们下载你的db文件很多,这也意味着你的应用程序运行良好; - )
答案 1 :(得分:0)
我测试apk expansion files。我创建了一个带有100 MB sqlite数据库的测试应用程序,将apk和数据库上传到了Play商店。然后我将应用程序下载到手机上,同时下载了数据库。数据库自动重命名并放在可公开访问的目录中:
/storage/sdcard0/Android/obb/com.example.app/main.1.com.example.app.obb
该应用程序能够毫无问题地打开数据库,但需要外部读写权限。新的和原始的数据库是一点一滴,相同。这似乎是我用例的最佳解决方案。
一些问题,新的Android开发者控制台不支持上传扩展文件,因此需要使用旧版本。 Google只允许使用2个扩展文件,因此对于某些用例可能会出现问题。 Google表示您不得重命名或删除该文件,并且如果该文件未自动安装,您的应用必须能够从Google自身下载该文件。