在 TextReconiger 上实例化期间,我如何处理由于 Google Ocr lib 而导致的应用程序中的本机崩溃?
Posted
技术标签:
【中文标题】在 TextReconiger 上实例化期间,我如何处理由于 Google Ocr lib 而导致的应用程序中的本机崩溃?【英文标题】:How can i handle native crash in my app due to Google Ocr lib, during instantiation on TextReconiger? 【发布时间】:2018-04-22 13:19:56 【问题描述】:我正在使用 Google 的 OCR 库从我的应用中的图像中检测文本。早些时候它工作正常,但突然开始出错。我在 TextReconiger 的实例化过程中崩溃了。我在三星 S6 edge、三星 S7 等设备上遇到了这种崩溃,而在某些设备上它运行良好。
我在代码中的这一行遇到了崩溃
TextRecognizer textRecognizer = new TextRecognizer.Builder(context).build();
崩溃日志:
native: pc 000000000006f9fc /system/lib64/libc.so (tgkill+8)
native: pc 000000000006cd10 /system/lib64/libc.so (pthread_kill+64)
native: pc 0000000000025078 /system/lib64/libc.so (raise+24)
native: pc 000000000001cc04 /system/lib64/libc.so (abort+52)
native: pc 00000000004750d0
/data/data/com.google.android.gms/app_vision/ocr/libs/arm64-
v8a/libocr.so
native: pc 0000000000475770
/data/data/com.google.android.gms/app_vision/ocr/libs/arm64-
v8a/libocr.so
native: pc 0000000000475814
/data/data/com.google.android.gms/app_vision/ocr/libs/arm64-
v8a/libocr.so
native: pc 0000000000474830
/data/data/com.google.android.gms/app_vision/ocr/libs/arm64-
v8a/libocr.so
native: pc 000000000026cee4
/data/data/com.google.android.gms/app_vision/ocr/libs/arm64-
v8a/libocr.so
native: pc 0000000000271190
/data/data/com.google.android.gms/app_vision/ocr/libs/arm64-
v8a/libocr.so
native: pc 0000000000065794
/data/data/com.google.android.gms/app_vision/ocr/libs/arm64-
v8a/libocr.so
native: pc 0000000000065488
/data/data/com.google.android.gms/app_vision/ocr/libs/arm64-
v8a/libocr.so
native: pc 000000000027caf4
/data/data/com.google.android.gms/app_vision/ocr/libs/arm64-
v8a/libocr.so
native: pc 0000000000280274
/data/data/com.google.android.gms/app_vision/ocr/libs/arm64-
v8a/libocr.so
native: pc 0000000000067c84
/data/data/com.google.android.gms/app_vision/ocr/libs/arm64-
v8a/libocr.so
native: pc 0000000000067f64
/data/data/com.google.android.gms/app_vision/ocr/libs/arm64-
v8a/libocr.so
native: pc 0000000000063dec
/data/data/com.google.android.gms/app_vision/ocr/libs/arm64-
v8a/libocr.so
native: pc 0000000000387e60
/data/user_de/0/com.google.android.gms/app_chimera/m/00000027/oat/arm64
/DynamiteModulesA_GmsCore_prodmnc_xxhdpi_release.odex
此崩溃正在影响我的应用在 Google Play 商店中的评级。从这个崩溃日志中,我不知道如何解决这个问题。如果有人知道此问题的解决方案,请帮助我。
【问题讨论】:
如果您有问题并且您有答案,如果 SO 上没有解决方案,请使用相关信息解释问题,然后提供您的解决方案作为答案。跨度> 【参考方案1】:我在 App 端实现了一些逻辑来减少崩溃。
从应用程序方面,我们可以做一件事来最大程度地减少崩溃。我们可以编写代码来跟踪在 TextRecognizer 对象实例化期间应用程序是否在设备上崩溃,然后从下一次我们可以绕过/禁用 OCR 功能。但在其他设备上(没有崩溃)它会完美运行。
这将导致在受影响的设备上崩溃一次,并且下次不会崩溃(是的,它会影响功能)。
boolean isFirstTimeUser = getBooleanFromPreference (default value TRUE)
boolean isGVSupportThisDevice = getBooleanFromPreference (default value False)
if (isFirstTimeUser || isGVSupportThisDevice)
Update Preference to make isFirstTimeUser to false
textRecognizer = new TextRecognizer.Builder(context).build();
Update Preference to make isGVSupportThisDevice to True
这可能会有所帮助。谢谢
【讨论】:
Update Preference to make isGVSupportThisDevice to false 最后一行应该是 true 而不是 false,如果我错了请纠正我。 我们正在做的是保留在 Firebase 上崩溃的设备列表。如果有任何设备崩溃,那么我们将在 firebase 中手动添加设备。从 GitHub 问题页面我们已经拥有数百台设备。【参考方案2】:我有同样的问题和同样的错误跟踪。
我了解到,带有 OCR 修复的新 Google Play 服务版本目前处于 Beta 通道中。我刚刚测试过它并且正在工作!
https://play.google.com/apps/testing/com.google.android.gms
【讨论】:
以上是关于在 TextReconiger 上实例化期间,我如何处理由于 Google Ocr lib 而导致的应用程序中的本机崩溃?的主要内容,如果未能解决你的问题,请参考以下文章
模仿`super`关键字:在实例化期间设置`base`类和`derived`类字段