- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我只在 android 2.2 版本上遇到错误,但在 2.3 版本上没有。
错误:
04-26 13:41:34.862: ERROR/Database(3701): sqlite3_open_v2("/data/data/com.TravelPharm/databases/medicaments.sqlite", &handle, 1, NULL) failed
04-26 13:41:34.942: DEBUG/dalvikvm(417): GC_EXPLICIT freed 82 objects / 4000 bytes in 1617ms
04-26 13:41:35.062: DEBUG/asset(3701): Data exceeds UNCOMPRESS_DATA_MAX (17304576 vs 1048576)
04-26 13:41:35.062: DEBUG/AndroidRuntime(3701): Shutting down VM
04-26 13:41:35.072: WARN/dalvikvm(3701): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
04-26 13:41:35.103: ERROR/AndroidRuntime(3701): FATAL EXCEPTION: main
04-26 13:41:35.103: ERROR/AndroidRuntime(3701): java.lang.Error: Error copying database
04-26 13:41:35.103: ERROR/AndroidRuntime(3701): at com.TravelPharm.DBHelper.createDataBase(DBHelper.java:395)
04-26 13:41:35.103: ERROR/AndroidRuntime(3701): at com.TravelPharm.TravelPharm.SumofDetails(TravelPharm.java:290)
04-26 13:41:35.103: ERROR/AndroidRuntime(3701): at com.TravelPharm.TravelPharm.onCreate(TravelPharm.java:64)
04-26 13:41:35.103: ERROR/AndroidRuntime(3701): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
04-26 13:41:35.103: ERROR/AndroidRuntime(3701): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
04-26 13:41:35.103: ERROR/AndroidRuntime(3701): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
04-26 13:41:35.103: ERROR/AndroidRuntime(3701): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
04-26 13:41:35.103: ERROR/AndroidRuntime(3701): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
04-26 13:41:35.103: ERROR/AndroidRuntime(3701): at android.os.Handler.dispatchMessage(Handler.java:99)
04-26 13:41:35.103: ERROR/AndroidRuntime(3701): at android.os.Looper.loop(Looper.java:123)
04-26 13:41:35.103: ERROR/AndroidRuntime(3701): at android.app.ActivityThread.main(ActivityThread.java:4627)
04-26 13:41:35.103: ERROR/AndroidRuntime(3701): at java.lang.reflect.Method.invokeNative(Native Method)
04-26 13:41:35.103: ERROR/AndroidRuntime(3701): at java.lang.reflect.Method.invoke(Method.java:521)
04-26 13:41:35.103: ERROR/AndroidRuntime(3701): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
04-26 13:41:35.103: ERROR/AndroidRuntime(3701): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
04-26 13:41:35.103: ERROR/AndroidRuntime(3701): at dalvik.system.NativeStart.main(Native Method)
我明白这是因为我的数据库太大“UNCOMPRESS_DATA_MAX”所以我该如何解决这个问题??
我将不胜感激,
谢谢!!!
最佳答案
我也有类似的问题,经过大量搜索,我找到了这个页面来回答我的问题。
http://ponystyle.com/blog/2010/03/26/dealing-with-asset-compression-in-android-apps/
总而言之,Android 会压缩除页面上列出的 Assets 文件之外的任何 Assets 文件,因为它们已经被压缩。这种压缩通常是一件好事,但是当文件太大时,它又会困扰程序员。作者建议的两个选项是 1)将数据库文件重命名为未压缩的文件(例如 .jpg)或 2)关闭数据库文件扩展名的压缩(请参阅有关如何操作的博客文章那)。如果您使用的是 Eclipse,第 2 个可能会很困难,因此作者建议使用第一个选项。
整个问题已在 Android 2.3.3 中得到纠正,这就是为什么您没有出现错误的原因 :)
编辑:这个网站解释得很简单: https://web.archive.org/web/20120423232710/http://www.nutprof.com/2010/12/data-exceeds-uncompressdatamax.html
编辑2:回顾这个答案,我意识到根据文件的大小,也许您可以考虑从网络服务器下载文件,然后将其复制到您需要的任何地方。就我而言,我正在将 SQLLite DB 复制到应用程序私有(private)存储中,但由于 APK 已签名,我无法从我的 Assets 中删除旧数据库。所以现在我不再使用那些时髦的命名东西,而是去让它在第一次运行时从互联网上下载并放在私有(private)空间中。这样,应用程序在第一次运行时不会使其大小翻倍。
关于android - 我收到此错误 : Data exceeds UNCOMPRESS_DATA_MAX on android 2. 2 但在 2.3 上没有,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5789177/
有些东西我不明白。我正在模拟器上测试一个应用程序,版本 2.2(2.3 没有问题)。 我有一个 xml 文件(“myXml.xml”)作为 Assets ,不会被解析。 context.getReso
我只在 android 2.2 版本上遇到错误,但在 2.3 版本上没有。 错误: 04-26 13:41:34.862: ERROR/Database(3701): sqlite3_open_v
我是一名优秀的程序员,十分优秀!