1

The application is working as fine without any unexpected behavior in API 29 emulator and on API 24 phone but crashes in API 26. The app crashes when it starts. After the splashscreen. I'm fairly new to android I don't understand why this happend.

My LogCag :

    --------- beginning of crash
2020-03-21 03:22:09.496 21362-21362/com.codebees.scaner E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.codebees.scaner, PID: 21362
    java.lang.RuntimeException: Canvas: trying to draw too large(113550336bytes) bitmap.
        at android.view.DisplayListCanvas.throwIfCannotDraw(DisplayListCanvas.java:229)
        at android.view.RecordingCanvas.drawBitmap(RecordingCanvas.java:97)
        at android.graphics.drawable.BitmapDrawable.draw(BitmapDrawable.java:529)
        at android.widget.ImageView.onDraw(ImageView.java:1367)
        at android.view.View.draw(View.java:20373)
        at android.view.View.updateDisplayListIfDirty(View.java:19318)
        at android.view.View.draw(View.java:20096)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4421)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4207)
        at androidx.constraintlayout.widget.ConstraintLayout.dispatchDraw(ConstraintLayout.java:2023)
        at android.view.View.updateDisplayListIfDirty(View.java:19309)
        at android.view.View.draw(View.java:20096)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4421)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4207)
        at androidx.constraintlayout.widget.ConstraintLayout.dispatchDraw(ConstraintLayout.java:2023)
        at android.view.View.draw(View.java:20376)
        at android.view.View.updateDisplayListIfDirty(View.java:19318)
        at android.view.View.draw(View.java:20096)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4421)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4207)
        at android.view.View.updateDisplayListIfDirty(View.java:19309)
        at android.view.View.draw(View.java:20096)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4421)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4207)
        at android.view.View.updateDisplayListIfDirty(View.java:19309)
        at android.view.View.draw(View.java:20096)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4421)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4207)
        at android.view.View.updateDisplayListIfDirty(View.java:19309)
        at android.view.View.draw(View.java:20096)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4421)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4207)
        at android.view.View.updateDisplayListIfDirty(View.java:19309)
        at android.view.View.draw(View.java:20096)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4421)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4207)
        at android.view.View.draw(View.java:20376)
        at com.android.internal.policy.DecorView.draw(DecorView.java:980)
        at android.view.View.updateDisplayListIfDirty(View.java:19318)
        at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:686)
        at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:692)
        at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:800)
        at android.view.ViewRootImpl.draw(ViewRootImpl.java:3496)
        at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:3283)
        at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2818)
        at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1780)
        at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7827)
        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:911)
        at android.view.Choreographer.doCallbacks(Choreographer.java:723)
        at android.view.Choreographer.doFrame(Choreographer.java:658)
        at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:897)
        at android.os.Handler.handleCallback(Handler.java:789)
        at android.os.Handler.dispatchMessage(Handler.java:98)
        at android.os.Looper.loop(Looper.java:164)
        at android.app.ActivityThread.main(ActivityThread.java:6944)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)

It says that "trying to draw too large(113550336bytes) bitmap." but I dont know which one because I only have xml drawable and 2 png

My Gradle :

apply plugin: 'com.android.application'

android {
    compileSdkVersion 29
    buildToolsVersion "29.0.2"

    defaultConfig {
        applicationId "com.codebees.scaner"
        minSdkVersion 19
        targetSdkVersion 29
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }

}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])

    implementation 'androidx.appcompat:appcompat:1.1.0'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test.ext:junit:1.1.1'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
    implementation 'com.google.zxing:core:3.2.1'
    implementation 'com.journeyapps:zxing-android-embedded:3.2.0@aar'

}

Any help will be much appreciated. Thanks !

EDIT : I found which png is causing the problem but I dont know how to resolve it, I comment the ImageView to test and it doesnt crash anymore. This is the ImageView in cause :

<ImageView
            android:id="@+id/imageView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:visibility="visible"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:srcCompat="@drawable/cross"
            tools:ignore="ContentDescription" />

And the drawable cross is a 1776x1776 alpha png but it got a glow effect I though I must vectorize this but I would lost my glowy effect

Saku
  • 305
  • 1
  • 2
  • 8
  • is your png under drawable-xxhdpi folder else add your png to [drawable folder](https://stackoverflow.com/a/31069202/8035260). – jose praveen Mar 21 '20 at 15:16
  • I only have a drawable folder so I guess everything is still in that folder – Saku Mar 21 '20 at 15:19
  • I just found where the problem comes but idk how to resolve it – Saku Mar 21 '20 at 15:58
  • Please have a look on [here](https://stackoverflow.com/questions/60251167/where-to-store-images-in-android/60310540#60310540) – Zain Mar 21 '20 at 16:06
  • I resized my png to 1440px x 1440px and now is 84kb but now It says this : `java.lang.OutOfMemoryError: Failed to allocate a 107869008 byte allocation with 16777216 free bytes and 89MB until OOM` – Saku Mar 21 '20 at 17:19

1 Answers1

0

I fixed this by reducing my png to 1024x1024 and 70kb size

Seems to work now

Saku
  • 305
  • 1
  • 2
  • 8