Android 安卓;mmap失败:内存不足“;大APK

Android 安卓;mmap失败:内存不足“;大APK,android,memory,crash,mmap,Android,Memory,Crash,Mmap,我的Android应用程序APK相当大,大约480MB。我可以很好地安装该应用程序,但在Android OS 2.2上,当该应用程序启动时,我收到以下错误(在logcat中): 这在OS 4.0+上不会发生。一些用户在2.3.4和2.3.7中报告启动时崩溃,我怀疑这是相同的问题。为什么mmap在我的APK上失败 编辑:我知道该应用程序非常大(这是一款拥有大量资产的游戏),Play Store将APK限制为50MB,但这是针对另一个国家没有APK大小限制的运营商的。我已经在Play Store上安

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

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


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

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

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

只是出于好奇,你的应用程序是如何消耗近半吉格的空间的?哦,哦,我的内存很痛。将内容从APK中移出,并在第一次运行时下载,或者根据需要进行分区和下载。请问是什么?离线电话簿?高清电影?该应用程序是一款游戏,拥有大量资产。APK的大小不应该与它消耗的内存(RAM)量无关吗?APK是mmap'ed,这意味着它在虚拟内存中占用的地址空间是由文件系统而不是内存支持的,对吗?这个“mmap内存不足”的问题发生在我用Java做一个“new”或用C做一个“malloc”之前(我使用JNI)。只是一个小提示:你只能以50MB的增量上传APK到Play Store。如果你打算使用它,你会希望将其拆分为。我确实有一个版本的应用程序使用Play Store的扩展文件,但此特定版本是为另一个国家/地区的另一家运营商的商店提供的,该商店没有APK大小限制(也没有扩展文件选项)。另一方面,play store上使用扩展文件的APK大小约为20 MB的版本没有mmap问题。只是出于好奇,你的应用程序是如何消耗近半gig的空间的?哦,哦,我的内存很痛。将内容从APK中移出,并在第一次运行时下载,或者根据需要进行分区和下载。请问是什么?离线电话簿?高清电影?该应用程序是一款游戏,拥有大量资产。APK的大小不应该与它消耗的内存(RAM)量无关吗?APK是mmap'ed,这意味着它在虚拟内存中占用的地址空间是由文件系统而不是内存支持的,对吗?这个“mmap内存不足”的问题发生在我用Java做一个“new”或用C做一个“malloc”之前(我使用JNI)。只是一个小提示:你只能以50MB的增量上传APK到Play Store。如果你打算使用它,你会希望将其拆分为。我确实有一个版本的应用程序使用Play Store的扩展文件,但此特定版本是为另一个国家/地区的另一家运营商的商店提供的,该商店没有APK大小限制(也没有扩展文件选项)。另一方面,play store上使用扩展文件的APK大小约为20 MB的版本没有mmap问题。
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 
...