square / spoon

Distributing instrumentation tests to all your Androids.
https://square.github.io/spoon/
Apache License 2.0
2.7k stars 477 forks source link

java.lang.IllegalStateException: Software rendering doesn't support hardware bitmaps #539

Closed tir38 closed 6 years ago

tir38 commented 6 years ago

Setup: com.jaredsburrows:gradle-spoon-plugin:1.4.0 com.squareup.spoon:spoon-client:2.0.0-SNAPSHOT testing on Android API 27

Error:

java.lang.IllegalStateException: Software rendering doesn't support hardware bitmaps
    at android.graphics.BaseCanvas.throwIfHwBitmapInSwMode(BaseCanvas.java:532)
    at android.graphics.BaseCanvas.throwIfCannotDraw(BaseCanvas.java:62)
    at android.graphics.BaseCanvas.drawBitmap(BaseCanvas.java:120)
    at android.graphics.Canvas.drawBitmap(Canvas.java:1434)
    at android.graphics.drawable.BitmapDrawable.draw(BitmapDrawable.java:529)
    at android.widget.ImageView.onDraw(ImageView.java:1349)
    at android.view.View.draw(View.java:19192)
    at android.view.View.draw(View.java:19062)
    at android.view.ViewGroup.drawChild(ViewGroup.java:4236)
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4022)
    at android.view.ViewOverlay$OverlayViewGroup.dispatchDraw(ViewOverlay.java:251)
    at android.view.View.draw(View.java:19201)
    at android.view.View.draw(View.java:19062)
    at android.view.ViewGroup.drawChild(ViewGroup.java:4236)
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4022)
    at android.view.View.draw(View.java:19195)
    at android.view.View.draw(View.java:19062)
    at android.view.ViewGroup.drawChild(ViewGroup.java:4236)
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4022)
    at android.view.View.draw(View.java:19060)
    at android.view.ViewGroup.drawChild(ViewGroup.java:4236)
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4022)
    at android.view.View.draw(View.java:19060)
    at android.view.ViewGroup.drawChild(ViewGroup.java:4236)
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4022)
    at android.view.View.draw(View.java:19060)
    at android.view.ViewGroup.drawChild(ViewGroup.java:4236)
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4022)
    at android.view.View.draw(View.java:19060)
    at android.view.ViewGroup.drawChild(ViewGroup.java:4236)
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4022)
    at android.view.View.draw(View.java:19060)
    at android.view.ViewGroup.drawChild(ViewGroup.java:4236)
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4022)
    at android.view.View.draw(View.java:19195)
    at android.view.View.draw(View.java:19062)
    at android.view.ViewGroup.drawChild(ViewGroup.java:4236)
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4022)
    at android.view.View.draw(View.java:19195)
    at com.android.internal.policy.DecorView.draw(DecorView.java:788)
    at com.squareup.spoon.Screenshot.drawDecorViewToBitmap(Screenshot.java:52)
    at com.squareup.spoon.Screenshot.access$000(Screenshot.java:12)
    at com.squareup.spoon.Screenshot$1.run(Screenshot.java:35)

I'm not 100% sure why this is happening (I don't fully understand the Android rendering pipeline). Spoon is able to take some screenshots and then crashes on others. Is the problem with the bitmap generated by Spoon? or one of the bitmaps displayed in my app?

edenman commented 6 years ago

Sounds like this happens if you're using a blur transformation or other hardware-layer transformations? There's a workaround in: https://github.com/wasabeef/glide-transformations/issues/95