我是一名学生正在为我的学校项目工作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,以下是导致崩溃的原因:
所述的错误是不满意的链接错误,它表示应用程序失败,因为它无法加载库" libpngt.so"。
问题是,我之前在Android Studio上使用Galaxy Note 3时遇到过这个错误,设法通过放置" libpngt.so"来解决它。在" tess-two \ libs \ armeabi-v7a"目录。它仍在使用Galaxy Note 3
如下图所示:
此外,我搜索了很多网站的解决方案。 NDK构建也已成功构建。
目前我不确定接下来我能做什么,因为之前我已经解决了这个错误,但是这个实例出现了同样的问题,而之前的解决方案并没有起作用。
是否可能是由于logcat中未说明的任何其他错误引起的?也许改变API?只是想知道,请通过提供任何可能的建议来帮助我,因为我仍然是Android开发人员的初学者。提前致谢!
答案 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文件的目录。