2

我的 Android 应用 APK 相当大,约为 480 MB。我可以很好地安装应用程序,但在 Android OS 2.2 上启动应用程序时出现此错误(在 logcat 中):

09-21 00:04:12.855: W/dalvikvm(3178): mmap(480331001, RO, FILE|SHARED, 28, 0) failed: Out of memory
09-21 00:04:12.855: W/dalvikvm(3178): Map of '/data/app/com.mycompany.myapp-1.apk' failed
09-21 00:04:12.855: D/AndroidRuntime(3178): Shutting down VM
09-21 00:04:12.855: W/dalvikvm(3178): threadid=1: thread exiting with uncaught exception (group=0x4001d828)
09-21 00:04:12.859: E/AndroidRuntime(3178): FATAL EXCEPTION: main
09-21 00:04:12.859: E/AndroidRuntime(3178): java.lang.RuntimeException: Unable to instantiate activity 
...

这在 OS 4.0+ 上不会发生。一些用户在 2.3.4 和 2.3.7 中报告启动时崩溃,我怀疑这是同一个问题。为什么 mmap 在我的 APK 上失败?

编辑:我知道该应用程序非常大(这是一款拥有大量资产的游戏),并且 Play 商店将 APK 限制为 50 MB,但这是针对另一个没有 APK 大小限制的国家/地区的运营商。我已经在 Play Store 上有一个应用程序版本,其 APK 约为 20MB,它使用了没有 mmap 问题的扩展文件。

4

1 回答 1

0

只是一个猜测,但在第一次运行时尝试将文件复制到用户内存,然后从那里映射它。

于 2015-03-24T19:56:42.123 回答