0

我们已经在亚马逊市场上提交了一个应用程序,上传的 .apk 在其他设备和我的 KFTT 上也可以正常工作,但是当我们或其他用户从亚马逊市场下载应用程序时,它会导致 OutofMEmoryError。我们在游戏中使用了 1024X1024 和 2048X2048 的 sprite sheet。

当我们手动安装 .apk 时,它永远不会崩溃,但是当我们从亚马逊市场下载它后运行它时,它总是会崩溃。有人可以告诉我们它的原因是什么以及如何解决它?

java.lang.OutOfMemoryError
at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:483)
at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:549)
at com.finoit.androidgames.framework.gl.Texture.load(Texture.java:42)
at com.finoit.androidgames.framework.gl.Texture.(Texture.java:30)
at com.finoit.androidgames.tapafish.Assets.load(Assets.java:458)
at com.finoit.androidgames.tapafish.FishTank.onSurfaceCreated(FishTank.java:23)
at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1446)
at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1216)
4

1 回答 1

0

我有同样的行为:amazon hd 8,9 上的内存不足,旁边的大小与 nexus 10 中的相同,它在 64 mb 上工作得非常好。

作为最快的解决方案,我在 AndroidManifest 中添加了 largeHeap 选项,它可以为您提供更多内存,如果需要,理论上可以达到 256 mb。暂时将其作为最简单的解决方案尝试。

……

此外,如果您想优化,请尝试使用 MAT 的 DDMS,以了解已分配内存的最大部分。当您找到最大的部分时,通常这是位图,您始终可以在比例低于 hdpi(大多数设备的亚马逊默认密度)的 bitmapFactory 的帮助下加载它们,它确实节省了内存。

于 2013-04-15T12:59:18.673 回答