修复旧Android版本的PDFium崩溃或包含自己的库
我有一个Android应用程序,它使用标准来呈现PDF。到目前为止,它工作得很好,我设法消除了应用程序中的大部分错误 我不知道如何摆脱的唯一错误是:修复旧Android版本的PDFium崩溃或包含自己的库,android,pdfrenderer,android-native-library,pdfium,pdf-rendering,Android,Pdfrenderer,Android Native Library,Pdfium,Pdf Rendering,我有一个Android应用程序,它使用标准来呈现PDF。到目前为止,它工作得很好,我设法消除了应用程序中的大部分错误 我不知道如何摆脱的唯一错误是: signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x7 #00 pc 00000000000be7e0 /system/lib/libpdfium.so (FPDF_CloseDocument+12) 它以多种形式发生(不仅仅是FPDF_CloseDocument),每天会话中会产生
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x7
#00 pc 00000000000be7e0 /system/lib/libpdfium.so (FPDF_CloseDocument+12)
它以多种形式发生(不仅仅是FPDF_CloseDocument),每天会话中会产生多达4%的崩溃。
这个问题在各种设备上的Android版本(从5到8)中都会遇到
经过一番搜索,该库(基于)在早期版本中似乎存在一些bug。这就是为什么Android版本9和10没有出现问题的原因
因此,我的实际任务是消除11起SIGSEGV崩溃
在这里,我有以下想法:
什么方法可以更好地消除11个SIGSEGV崩溃?检查线程并确保没有并发问题,根据文档,这不是线程安全的:
您是否在Android 4.1上编译您的项目?我开始在使用最新工具构建的应用程序上观察这个问题。我使用安卓Studio 4.2金丝雀。我倾向于认为这是Android操作系统版本的设备。不幸的是,我无法在自己的环境中可靠地再现这个问题,只能在Google Play崩溃中看到它。所以我不能很好地研究这个问题,这是一个很好的观点。实际上,PdfRenderer是在几个活动中创建的,用于不同的目的:显示页面或缩略图等。因此,在每个活动中创建打开关闭是同步的,但不是在活动之间。我将在应用程序级别为创建一个静态变量/类,并从不同的活动中调用其open-close。你认为这种方法怎么样?真正的实际测试将需要一些时间。当我与渲染器的锁使用同步时,崩溃会少很多。在~3K设备上进行了一周的beta测试后,这种类型的错误几乎消失了!这是正确的解决方案!非常感谢。