我正在启动一个Android项目,这是我已完成的现有iPhone项目的端口。
我有一个相当大的只读SQLite数据库,大约100Mb。它被称为“mydata.sqlite”。我在哪里将它放在Eclipse工作区中?它对于“资产”来说太大了。
接下来,我如何最好地获取该文件?我会考虑尝试(稍后处理异常),例如:
SQLiteDatabase myDatabase = null;
myDatabase = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);
但是我需要路径字符串myPath
,因为我不知道在哪里放置资源我不知道这需要什么。
我可以将“mydata.sqlite”放入“res / raw”(一旦我在Eclipse中创建“raw”),然后将其作为资源引用“R.raw.mydata”吗?
我非常感谢这里的一些直接帮助,而不是对教程的引用。我检查了很多这些,包括那些已经在stackoverflow上引用的那些。我还浏览了Android开发者文档中的“记事本”项目。然而,这些和文档通常只考虑并不总是持久的新的,空的或小的数据库。这应该是一件简单的事情,考虑到我已经花费的时间,它可能更容易提出。
请提前感谢您的帮助。
答案 0 :(得分:1)
我之前从未尝试在我的应用中包含这么大的数据库。
您的问题的一个解决方案可能是将您的mydata.sqlite
重命名为mydata.jpg
,以避免文件被aapt压缩,然后您可以将其放入资产文件夹并从那里访问它。
任何压缩资产文件 未压缩的大小超过1 MB 无法从APK中读取。 [source]
编辑:现在最好的选择似乎是在需要时从Web服务器中检索小块数据?找到this,查看mjc147的解决方案,Google的Romain Guy解释了1mb的限制。
答案 1 :(得分:1)
请注意,如果您在.apk中放置一个100MB的资产,那么您最终会得到一个太大而无法在Market上发布的应用。
答案 2 :(得分:0)
我使用35MB的SQLite数据库做过一次。我做了什么:
1。)我使用Windows工具(我认为是TotalCommander)将* .db文件拆分为1MB。
2.)我把它们放在资产文件夹中。
3。)在我的数据库帮助程序类中,我在首次启动时将这些部分移动到一起。
它工作得很完美,而且足够快。
你应该考虑什么:
1。)在内部存储启动期间,您有一个3 * 50MB,因此请考虑将SD卡用于您的数据库。
2.。)在您的应用更新期间,您的设备上有4 * 50MB ...
此致 HJW