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 で起動時にクラッシュすることを報告していますが、これは同じ問題であると思われます。APK で mmap が失敗するのはなぜですか?

編集: アプリが非常に大きく (アセットがたくさんあるゲームです)、Play ストアが APK を 50 MB に制限していることは知っていますが、これは APK サイズ制限のない別の国のキャリア向けです。私は既に、mmap の問題を示さない拡張ファイルを使用する ~20MB の APK を持つアプリのバージョンを Play ストアに持っています。

4

1 に答える 1

0

推測ですが、最初の実行時にファイルをユーザーメモリにコピーしてから、そこからマッピングしてみてください。

于 2015-03-24T19:56:42.123 に答える