问题描述
我有一个使用标准PdfRenderer
呈现PDF的Android应用。到目前为止,它的运行情况一直很好,我设法摆脱了该应用程序中的大多数错误。
我不知道如何消除的唯一错误是:
signal 11 (SIGSEGV),code 1 (SEGV_MAPERR),fault addr 0x7
#00 pc 00000000000be7e0 /system/lib/libpdfium.so (FPDF_CloseDocument+12)
它发生了多种变化(不仅是FPDF_CloseDocument),并且在日常会话中最多产生4%的崩溃。 在各种设备上,从5到8的Android版本会遇到此问题。
经过一些搜索后,发现PDFium
库(基于PdfRenderer
的库)在早期版本中存在一些错误。这就是为什么该问题没有出现在Android版本9和10上的原因。
所以我的实际任务是消除11个SIGSEGV崩溃。
在这里,我有以下想法:
-
将最新版本的PDFium包含到我的应用中。目前,libpdfium.so已包含在Android操作系统中。我可以在我的应用程序中包含最终更正的库并使用它吗?在哪里可以找到libpdfium.so以及如何在应用程序中使用它?
-
使用备用PDF渲染器。我需要以所需的缩放和分辨率渲染PDF页面的一部分,并且我需要像MIT或Apache这样的宽松许可证。不需要开源我的项目。我找不到任何合适的方法,例如MuPDF需要将整个项目开源,PSPDFKit是完全专有的。
摆脱11次SIGSEGV崩溃的更好方法是什么?
解决方法
检查您的线程,并确保没有并发问题,根据文档,它不是线程安全的: https://developer.android.com/reference/android/graphics/pdf/PdfRenderer