在某些6.0设备上解码png图像时,Android原生崩溃



仅在6.0设备中发生,堆栈跟踪如下。我正在通过设置BitmapFactory来缩小图像。Options.inSampleSize,所以我的代码是缩放png文件。这是什么问题?

回溯:#00 pc 00000000000 2c7d8/system/lib64/libpng.so(sub_filter_2bpp_neon64+136)#01 pc 00000000000 12da4/system/lib64/libpng.so(png_read_row+440)#02 pc 00000000000 13048/system/lib64/libpng.so(png_read_rows+96)#03 pc 000000000028c024/system/lib64/libskia.so(_ZN17SkPNGImage解码器8onDecodeEP8SkStreamP8SkBitmapN14SkImageDecoder4ModeE+1692)#04台000000000027f70c/system/lib64/libskia.so(_ZN14SkImageDecoder6decodeEP8SkStreamP8SkBitmap11SkColorTypeNS_4ModeE+152)#05 pc 00000000000 f6140/system/lib64/libandoid_runtime.so#06 pc 00000000000 f6a78/system/lib64/libandrid_runtime.so#07 pc 000000000 3497668/system/framework/arm64/boot.oat

我得到了一个Legacy项目,在第一个版本之后,一些用户开始崩溃。我花了三天时间搜寻。当我拿到有问题的设备时,问题很快就被发现了。事实证明,我看错了地方,因为这个项目有很多本地库。

在我的案例中,问题出现在资源中错误的PNG文件中。此PNG用于XML标记中的阴影。

<View android:layout_width="fill_parent" 
android:layout_height="8dp"
android:background="@drawable/df_tab_bar_shadow"/>

这张照片是16位彩色的。我将PNG转换为32位颜色,解决了问题

最新更新