Android Studio:应用程序在API 29上运行,但在API 26上崩溃

Android Studio:应用程序在API 29上运行,但在API 26上崩溃,android,crash,logcat,android-bitmap,Android,Crash,Logcat,Android Bitmap,应用程序在API 29 emulator和API 24 phone上运行正常,没有任何意外行为,但在API 26中崩溃应用程序启动时崩溃。在splashscreen之后。我对android还相当陌生,我不明白为什么会发生这种情况 我的日志: --------- beginning of crash 2020-03-21 03:22:09.496 21362-21362/com.codebees.scaner E/AndroidRuntime: FATAL EXCEPTION: main

应用程序在API 29 emulator和API 24 phone上运行正常,没有任何意外行为,但在API 26中崩溃应用程序启动时崩溃。在splashscreen之后。我对android还相当陌生,我不明白为什么会发生这种情况

我的日志:

    --------- 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)
它说“试图绘制太大(113550336字节)的位图”,但我不知道是哪一个,因为我只有xml可绘制和2个png

我的格拉德尔:

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'

}
任何帮助都将不胜感激。谢谢

编辑:我找到了导致问题的png,但我不知道如何解决它,我对ImageView进行了注释以进行测试,它不再崩溃。 这是原因中的ImageView:

<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" />

可拉伸十字架是1776x1776 alpha png,但它有发光效果
我想我必须对其进行矢量化,但我会失去发光效果

我通过将png缩小到1024x102KB和70kb来解决这个问题


现在似乎可以工作了

我通过将png大小减少到1024x102KB和70kb来解决这个问题


现在似乎可以正常工作了

您的png是否在可绘制的xxhdpi文件夹下,其他人可以将您的png添加到其中。我只有一个可绘制的文件夹,所以我想一切都还在该文件夹中。我刚刚找到问题出在哪里,但idk如何解决请查看我将png的大小调整为1440px 1440px,现在是84kb,但现在它说:
java.lang.OutOfMemoryError:无法分配107869008字节分配,16777216个可用字节和89MB,直到OOM
是可绘制xxhdpi文件夹下的png,否则请将png添加到。我只有一个可绘制文件夹,所以我猜所有内容都仍然在该文件夹中。我刚刚找到问题所在,但idk如何解决请查看在上,我将png的大小调整为1440px 1440px,现在是84kb,但现在它显示:
java.lang.OutOfMemoryError:未能分配107869008字节分配,16777216个可用字节和89MB,直到OOM