2016-01-06 27 views
1

我是一個學生在OCR功能爲我的學校項目。直到現在,我才能夠實現這些功能併成功運行應用程序。Android的OCR:不合適的鏈接錯誤

我有我的應用程序在Android Studio 1.5.1上,並且能夠在我的舊設備上運行它,Samsung Galaxy Note 3 API 21。最近,我改變我的設備三星Galaxy Note 5 API 22和應用程序崩潰每當我試圖運行OCR功能。

下面是logcat的:

Fatal Exception: java.lang.IllegalStateException: Could not execute method of the activity at android.view.View$1.onClick(View.java:4298) at android.view.View.performClick(View.java:5254) at android.widget.TextView.performClick(TextView.java:10557) at android.view.View$PerformClick.run(View.java:21203) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:145) at android.app.ActivityThread.main(ActivityThread.java:6897) at java.lang.reflect.Method.invoke(Method.java) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199) Caused by java.lang.reflect.InvocationTargetException at java.lang.reflect.Method.invoke(Method.java) at java.lang.reflect.Method.invoke(Method.java:372) at android.view.View$1.onClick(View.java:4293) at android.view.View.performClick(View.java:5254) at android.widget.TextView.performClick(TextView.java:10557) at android.view.View$PerformClick.run(View.java:21203) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:145) at android.app.ActivityThread.main(ActivityThread.java:6897) at java.lang.reflect.Method.invoke(Method.java) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199) Caused by java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.example.l33902.contactmanagment1512-2/base.apk"],nativeLibraryDirectories=[/data/app/com.example.l33902.contactmanagment1512-2/lib/arm64, /vendor/lib64, /system/lib64]]] couldn't find "libpngt.so" at java.lang.Runtime.loadLibrary(Runtime.java:367) at java.lang.System.loadLibrary(System.java:988) at 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) at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:591) at android.os.AsyncTask.execute(AsyncTask.java:539) at com.example.l33902.contactmanagment1512.ShowImage.startOCR(ShowImage.java:188) at java.lang.reflect.Method.invoke(Method.java) at java.lang.reflect.Method.invoke(Method.java:372) at android.view.View$1.onClick(View.java:4293) at android.view.View.performClick(View.java:5254) at android.widget.TextView.performClick(TextView.java:10557) at android.view.View$PerformClick.run(View.java:21203) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:145) at android.app.ActivityThread.main(ActivityThread.java:6897) at java.lang.reflect.Method.invoke(Method.java) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404) at 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構建也已成功構建。

目前我不確定我能做些什麼未來,我已經解決了這個錯誤之前,但在以前的解決方案是不工作出現這種情況相同的問題。

難道由未在thew logcat中規定的任何其他錯誤造成的?也許API的變化?只是想知道,請通過提供任何可能的建議來幫助我,因爲我仍然是Android開發人員的初學者。提前致謝!

+0

對應的* .so文件有可能是一個lib文件。如果那樣,你是否將這些包含在項目的構建路徑中?您是否嘗試移植現有的eclipse項目或構建新項目?你可以嘗試刪除「app \ build」下的文件夾,然後清理>構建 – Stallion

+0

這是一個ecilpse項目,但是我已經移植到Android Studio並且可以成功運行。只有在將設備切換到Samsung Note 5後,纔會出現此問題。 –

+0

您正在使用的是哪種OCR SDK?檢查您使用的OCR SDK版本是否支持該設備。有些可能無法在更高版本中使用。 – Stallion

回答

0

我覺得Galaxy Note的5是一個ARMv8的手機。嘗試用arm64-v8aAPP_ABI線的Application.mk文件重建庫:

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

這樣做之後,你應該有六個目錄與* .so文件的libs目錄下。

+0

您好@rmtheis,非常感謝您的回覆。我現在試圖在Note 5上運行它,它已經可以在Note 3上運行了。我的Application.mk文件中已經有了你所說的「APP_ABI:= armeabi-v7a x86 mips arm64-v8a x86_64 mips64」這一行。那麼我怎麼爲Note 5實現呢? –

+0

我剛查過:注3是armeabi-v7a,注5是arm64-v8a –

+0

以下是目前在我的Application.mk中的信息:APP_STL:= gnustl_static APP_ABI:= armeabi-v7a x86 mips#arm64-v8a x86_64 mips64 APP_OPTIM:= release APP_PLATFORM:= android-8 APP_CPPFLAGS + = -fexceptions -frtti NDK_TOOLCHAIN_VERSION:= 4.8 –