2017-01-13 3 views
-1

私はアンドロイドスタジオが初めてで、私は最初のプロジェクトを開発しています。ヒープがサイズを変更したくない(java.lang.OutOfMemoryError)アンドロイドスタジオ

私の問題は、携帯電話でapkを実行しようとするたびに、java.lang.OutOfMemoryErrorが発生するということです。私はそれを修正するためにさまざまな方法を試しましたが、そのどれもうまくいかないようです。ここで

は私のコンソールログエラーレポートです:

E/AndroidRuntime: FATAL EXCEPTION: main 
       Process: com.example.prvaaplikacija.gametutorial, PID: 32565 
       java.lang.OutOfMemoryError: Failed to allocate a 17013900 byte allocation with 13104128 free bytes and 12MB until OOM 
        at dalvik.system.VMRuntime.newNonMovableArray(Native Method) 
        at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method) 
        at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:613) 
        at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:446) 
        at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:1080) 
        at android.content.res.Resources.createFromResourceStream(Resources.java:2952) 
        at android.content.res.Resources.loadDrawableForCookie(Resources.java:2684) 
        at android.content.res.Resources.loadDrawable(Resources.java:2580) 
        at android.content.res.MiuiResources.loadDrawable(MiuiResources.java:387) 
        at android.content.res.TypedArray.getDrawable(TypedArray.java:872) 
        at android.graphics.drawable.AnimationDrawable.inflateChildElements(AnimationDrawable.java:324) 
        at android.graphics.drawable.AnimationDrawable.inflate(AnimationDrawable.java:294) 
        at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:1217) 
        at android.graphics.drawable.Drawable.createFromXml(Drawable.java:1126) 
        at android.content.res.Resources.createFromXml(Resources.java:2964) 
        at android.content.res.Resources.loadDrawableForCookie(Resources.java:2676) 
        at android.content.res.Resources.loadDrawable(Resources.java:2580) 
        at android.content.res.MiuiResources.loadDrawable(MiuiResources.java:387) 
        at android.content.res.Resources.getDrawable(Resources.java:824) 
        at android.content.Context.getDrawable(Context.java:467) 
        at android.view.View.setBackgroundResource(View.java:17225) 
        at android.support.v7.widget.AppCompatImageView.setBackgroundResource(AppCompatImageView.java:86) 
        at com.example.prvaaplikacija.gametutorial.main.onCreate(main.java:125) 
        at android.app.Activity.performCreate(Activity.java:6303) 
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108) 
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2376) 
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2483) 
        at android.app.ActivityThread.access$900(ActivityThread.java:153) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1349) 
        at android.os.Handler.dispatchMessage(Handler.java:102) 
        at android.os.Looper.loop(Looper.java:148) 
        at android.app.ActivityThread.main(ActivityThread.java:5441) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:738) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:628) 

私はCでgradle.propertiesファイルを作成:\ Users \ユーザーuser.gradle、それは次のようになります。

org.gradle.daemon=true 
org.gradle.jvmargs=-Xmx4096m -XX:MaxPermSize=4096m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 
org.gradle.parallel=true 
org.gradle.configureondemand=true 

私の地元のgradle.propertiesファイルは次のようになります。

org.gradle.jvmargs=-Xmx4096m -XX:MaxPermSize=4096m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 

しかし、私はマウスでそれを覆すと、私に01の通知が届きますunused property

このコードをbuild.gradleファイルに追加し、いくつかのバリエーションを試しましたが、それでも動作しません。

dexOptions { 
    preDexLibraries = false; 
    incremental true 
    javaMaxHeapSize "4g" 
} 

そして、この:

multiDexEnabled true 

私は手動で削除し、私の行動の全てが何らかの変更をしなかったことで、私のGradleキャッシュをクリアしようとしています。

誰かが私の問題を助けてくれたら本当に感謝しています。私は数日間これに固執しており、私はこれだけ解決するために何もできないと思う。

+0

あなたのonCreate()にメモリーが不足しているようです。関連するコードを共有できますか? (main.java - onCreate()) –

答えて

1

あなたの問題を修正しようとすると、開発マシンのOutOfMemoryErrorが修正されます。アプリのメモリが不足しているため、Android搭載端末でクラッシュが発生しています。

具体的には、ImageView —のあなたが背景として—をロードしようとしている(?)いくつかの描画可能リソースがヒープ領域の17013900のバイトを取るために起こっている、と大きなことを、あなたがヒープ領域の空きブロックを持っていません。

17013900バイトは、2062x2062ピクセルイメージに相当します。これはあまりにも大きいです。

ので:

  • が描画可能リソースこれは(あなたがres/drawable/にリソースを置く場合

  • は、より適切なディレクトリを選択res/drawable-xhdpi/、またはおそらくのような密度固有のディレクトリのいずれかであるかを調べますres/drawable-nodpi/は、画面の密度に基づいてAndroidを変換しないでください)

  • 画像の解像度が大きい場合は、それを小さくしてください

+0

私は今私の問題の詳細を理解すると思います。私は、28フレームで構成されたアニメーションの背景を作成し、743,659 Bのスペースを取ります。だから私はちょうど別の描画可能なディレクトリを作成し、裾を入れる必要がありますか? – Mithor

+0

@ミスター:[複数の画面サイズと密度をサポートするためのドキュメント](https://developer.android.com/guide/practices/screens_support.html)を読んで、このバックグラウンドの処理方法を決定することをお勧めします。 – CommonsWare

関連する問題