首页 > 解决方案 > 修复旧 Android 版本的 PDFium 崩溃或包含自己的库

问题描述

我有一个使用该标准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 崩溃

在这里,我有以下想法:

  1. 在我的应用程序中包含最新版本的 PDFium。目前 libpdfium.so 包含在 Android 操作系统中。我可以将最终更正的库包含到我的应用程序中并使用它吗?在哪里可以找到 libpdfium.so 以及如何在应用程序中使用它?

  2. 使用替代的 PDF 渲染器。我需要以所需的缩放和分辨率呈现 PDF 页面的一部分,并且我需要一个非常宽松的许可证,例如 MIT 或 Apache,所以我不需要开源我的项目。我没有找到任何合适的,例如MuPDF需要开源整个项目,PSPDFKit是完全专有的。

摆脱 11 次 SIGSEGV 崩溃有什么更好的方法?

标签: androidpdfrendererandroid-native-librarypdfiumpdf-rendering

解决方案


检查您的线程并确保没有并发问题,根据文档它不是线程安全的: https ://developer.android.com/reference/android/graphics/pdf/PdfRenderer


推荐阅读