Android - 信号11,RS CPP错误:模糊半径超出0-25像素范围

Nic*_*oso 18 android

升级我的应用程序以在4.4.2设备上运行时,我收到错误

RS CPP error: Blur radius out of 0-25 pixel bound
Run Code Online (Sandbox Code Playgroud)

伴随着Signal 11(本机代码)错误:

Fatal signal 11 (SIGSEGV) at 0x00000028 (code=1)
Run Code Online (Sandbox Code Playgroud)

这个问题的根源花了我很长时间才找到没有结果的谷歌或堆栈溢出和搜索我的代码任何使用'模糊'没有透露任何东西.

Nic*_*oso 31

最终我确实设法在我使用的一个地方跟踪问题,这是在我的styles.xml中

<item name="android:shadowRadius">30</item>
Run Code Online (Sandbox Code Playgroud)

在一个风格延伸android:TextAppearance.Holo.Widget.TextView.此问题的解决方法是使用错误中指定范围内的值,例如

<item name="android:shadowRadius">25</item>
Run Code Online (Sandbox Code Playgroud)

我希望这可以帮助其他有类似问题的人不得不花费很长时间来找到他们的问题!

  • 有帮助.这在使用TextView.setShadowLayer方法时也有效. (6认同)

P.M*_*lch 8

如果在dp中指定shadowRadius并且转换的像素半径大于25,也会发生这种情况.

因此,例如,如果您将半径指定为8dp并在xxxhdpi设备(密度乘数4)上运行应用程序,则有效半径(以像素为单位)为32.


Sur*_*gch 5

如果需要高于 25 像素的模糊半径,则可以关闭硬件渲染。

android:layerType="software"
Run Code Online (Sandbox Code Playgroud)

或者

myView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
Run Code Online (Sandbox Code Playgroud)

请参阅硬件加速文档。

根据我的经验,关闭“加速”似乎不会对我的特定应用程序的性能产生负面影响。但是,模糊质量略有明显差异。

使用硬件渲染:

在此处输入图片说明

使用软件渲染:

在此处输入图片说明

(以上两张图片来自运行 Android 5 的小米 2 手机。较新的硬件和软件可能会给出不同的结果。)

这种质量命中是不可取的,但我发现它在大多数情况下是可以接受的。而且真的没有其他选择,因为除了上述崩溃之外,我在使用硬件加速时还遇到了许多其他非常奇怪的错误。