0

これについて助けが必要です。問題は、私が取り組んでいるプロジェクトにマップ用のカスタム タイル マップ プロバイダーが必要なことです。プロジェクトは通常、オンライン gradle などを使用してビルドに 30 秒もかかりません。

カスタム タイルを含む画像をアセット フォルダーに追加すると、問題が発生します。ビルド時間は最大 3 時間かかります。またはわずか10分で、このエラーが発生します。

java.lang.OutOfMemoryError: GC オーバーヘッドの制限を超えました

この設定をgradle設定に追加すると、エラーは解消されるはずですが、機能しません。

dexOptions { 
          incremental true 
          javaMaxHeapSize "4g" 
} 

私はこのオプションを考えて、それを 8g まで増やしましたが、何もしませんでした。

アプリをビルドしようとすると、ビルドがクラッシュして前のエラーが発生するまで、CPU が 100% になり、8Gb の使用量のうち 7.9Gb になります。

アプリはオフラインで動作する必要があるため、タイルをダウンロードできず、アプリのサイズは重要ではありません。アプリストアからリリースされず、一部のデバイスに直接インストールされるためです。

tiles フォルダーのサイズは約 250Mb で、約 30000 個のファイル、7000 個のファイルがありますが、同じ結果が得られます。

ファイルのサイズ、ファイルの量が原因ですか?、おそらく両方ですか?

私はAndroid開発の「新人」であり、2011年にいくつかの基本を学びましたが、約4か月前まで何も行ったり学んだりしていなかったので、ちょっと迷っています。

また、スペルミスや変な言い回しがある場合は申し訳ありません。私は英語のネイティブ スピーカーではありません。

編集:

Extra details as Morrishon Chang asked
OS: window 10
Memmory: 8Gb
JDK: 1.8.0_144
average tile image size: 13kb
image tile format: png
image tiles ammount: about 32000 images
4

1 に答える 1

1

まず、Android Drawable Importer プラグインを使用することをお勧めします。Android Studio -> Preferences -> Plugins からアクセスできます。通常、そのプラグインを使用してアセットをインポートすると、すべて正常に動作します。

次に、私の意見では非常に強力なGlideなどの画像処理ライブラリを使用することをお勧めします。

第三に、タイルの読み込みを最適化してみてください。おそらく RecyclerView を使用しますか?

幸運を!

于 2018-08-11T04:03:38.493 に答える