Android OCR:不满意的链接错误

时间:2016-01-06 04:28:03

标签: android android-studio ocr tesseract

我是一名学生正在为我的学校项目工作OCR功能。我能够实现这些功能并成功运行应用程序直到现在。

我在Android Studio 1.5.1上有我的应用程序,并且可以在我的旧设备Samsung Galaxy Note 3 API 21 上运行它。最近,我将我的设备更改为三星Galaxy Note 5 API 22 ,每当我尝试运行OCR功能时,应用程序都会崩溃。

下面是logcat:

  

致命异常:java.lang.IllegalStateException:无法执行   活动方法          在android.view.View $ 1.onClick(View.java:4298)          在android.view.View.performClick(View.java:5254)          在android.widget.TextView.performClick(TextView.java:10557)          在android.view.View $ PerformClick.run(View.java:21203)          在android.os.Handler.handleCallback(Handler.java:739)          在android.os.Handler.dispatchMessage(Handler.java:95)          在android.os.Looper.loop(Looper.java:145)          在android.app.ActivityThread.main(ActivityThread.java:6897)          在java.lang.reflect.Method.invoke(Method.java)          在java.lang.reflect.Method.invoke(Method.java:372)          在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1404)          在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199)引起   通过java.lang.reflect.InvocationTargetException          在java.lang.reflect.Method.invoke(Method.java)          在java.lang.reflect.Method.invoke(Method.java:372)          在android.view.View $ 1.onClick(View.java:4293)          在android.view.View.performClick(View.java:5254)          在android.widget.TextView.performClick(TextView.java:10557)          在android.view.View $ PerformClick.run(View.java:21203)          在android.os.Handler.handleCallback(Handler.java:739)          在android.os.Handler.dispatchMessage(Handler.java:95)          在android.os.Looper.loop(Looper.java:145)          在android.app.ActivityThread.main(ActivityThread.java:6897)          在java.lang.reflect.Method.invoke(Method.java)          在java.lang.reflect.Method.invoke(Method.java:372)          在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1404)          在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199)引起   通过java.lang.UnsatisfiedLinkError:   dalvik.system.PathClassLoader [DexPathList [[zip文件   " /data/app/com.example.l33902.contactmanagment1512-2/base.apk"],nativeLibraryDirectories = [/数据/应用/ com.example.l33902.contactmanagment1512-2 / LIB / arm64,   / vendor / lib64,/ system / lib64]]]无法找到" libpngt.so"          在java.lang.Runtime.loadLibrary(Runtime.java:367)          在java.lang.System.loadLibrary(System.java:988)          在com.googlecode.tesseract.android.TessBaseAPI。(TessBaseAPI.java:43)          at com.example.l33902.contactmanagment1512.ShowImage.initTess(ShowImage.java:171)          at com.example.l33902.contactmanagment1512.ShowImage $ OCR.onPreExecute(ShowImage.java:551)          在android.os.AsyncTask.executeOnExecutor(AsyncTask.java:591)          在android.os.AsyncTask.execute(AsyncTask.java:539)          在com.example.l33902.contactmanagment1512.ShowImage.startOCR(ShowImage.java:188)          在java.lang.reflect.Method.invoke(Method.java)          在java.lang.reflect.Method.invoke(Method.java:372)          在android.view.View $ 1.onClick(View.java:4293)          在android.view.View.performClick(View.java:5254)          在android.widget.TextView.performClick(TextView.java:10557)          在android.view.View $ PerformClick.run(View.java:21203)          在android.os.Handler.handleCallback(Handler.java:739)          在android.os.Handler.dispatchMessage(Handler.java:95)          在android.os.Looper.loop(Looper.java:145)          在android.app.ActivityThread.main(ActivityThread.java:6897)          在java.lang.reflect.Method.invoke(Method.java)          在java.lang.reflect.Method.invoke(Method.java:372)          在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1404)          在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199)

我已在此应用程序中实施了Crashlytics,以下是导致崩溃的原因:

enter image description here

所述的错误是不满意的链接错误,它表示应用程序失败,因为它无法加载库" libpngt.so"。

问题是,我之前在Android Studio上使用Galaxy Note 3时遇到过这个错误,设法通过放置" libpngt.so"来解决它。在" tess-two \ libs \ armeabi-v7a"目录。它仍在使用Galaxy Note 3

如下图所示:

enter image description here

此外,我搜索了很多网站的解决方案。 NDK构建也已成功构建。

目前我不确定接下来我能做什么,因为之前我已经解决了这个错误,但是这个实例出现了同样的问题,而之前的解决方案并没有起作用。

是否可能是由于logcat中未说明的任何其他错误引起的?也许改变API?只是想知道,请通过提供任何可能的建议来帮助我,因为我仍然是Android开发人员的初学者。提前致谢!

1 个答案:

答案 0 :(得分:0)

我认为Galaxy Note 5是一款ARMv8手机。尝试使用Application.mk文件的arm64-v8a行上的APP_ABI重建库:

APP_ABI := armeabi-v7a x86 mips arm64-v8a x86_64 mips64

执行此操作后,您的libs目录下应该有六个带* .so文件的目录。