2014-02-19 6 views
15

Es ist ein Block von Code, der auf Android 4.1.2 funktioniert prima, aber nicht auf 4.0.3 ist das Crash-Protokoll von 4.0.3UnsatisfiedLinkError (Mutter Methode nicht gefunden)

Ich erhalte UnsatisfiedLinkError Ausnahme

Bitte leite mich dank

02-22 12:57:09.319: D/dalvikvm(1312): Trying to load lib /data/data/com.kosh.android/lib/libsqliteX.so 0x41056f48 
02-22 12:57:09.319: D/dalvikvm(1312): Added shared lib /data/data/com.kosh.android/lib/libsqliteX.so 0x41056f48 
02-22 12:58:02.060: W/dalvikvm(1312): No implementation found for native Lcom/shabdkosh/android/sqlite/CursorWindow;.native_init (Z)V 
02-22 12:58:07.624: D/AndroidRuntime(1312): Shutting down VM 
02-22 12:58:07.624: W/dalvikvm(1312): threadid=1: thread exiting with uncaught exception (group=0x409961f8) 
02-22 12:58:07.767: E/AndroidRuntime(1312): FATAL EXCEPTION: main 
02-22 12:58:07.767: E/AndroidRuntime(1312): java.lang.UnsatisfiedLinkError: native_init 
02-22 12:58:07.767: E/AndroidRuntime(1312):  at com.kosh.android.sqlite.CursorWindow.native_init(Native Method) 
02-22 12:58:07.767: E/AndroidRuntime(1312):  at com.kosh.android.sqlite.CursorWindow.<init>(CursorWindow.java:35) 
02-22 12:58:07.767: E/AndroidRuntime(1312):  at org.sqlite.database.sqlite.SQLiteCursor.awc_clearOrCreateWindow(SQLiteCursor.java:139) 
02-22 12:58:07.767: E/AndroidRuntime(1312):  at org.sqlite.database.sqlite.SQLiteCursor.fillWindow(SQLiteCursor.java:150) 
02-22 12:58:07.767: E/AndroidRuntime(1312):  at org.sqlite.database.sqlite.SQLiteCursor.getCount(SQLiteCursor.java:125) 
02-22 12:58:07.767: E/AndroidRuntime(1312):  at android.database.AbstractCursor.moveToPosition(AbstractCursor.java:158) 
02-22 12:58:07.767: E/AndroidRuntime(1312):  at android.database.AbstractCursor.moveToFirst(AbstractCursor.java:235) 
02-22 12:58:07.767: E/AndroidRuntime(1312):  at com.kosh.android.offline.Handler.newdb1_index0_list(Handler.java:99) 
02-22 12:58:07.767: E/AndroidRuntime(1312):  at com.kosh.android.offline.SearchDataDB.getAutoSuggestion(SearchDataDB.java:29) 
02-22 12:58:07.767: E/AndroidRuntime(1312):  at com.kosh.android.MainActivity.onQueryTextChange(MainActivity.java:885) 
02-22 12:58:07.767: E/AndroidRuntime(1312):  at android.widget.SearchView.onTextChanged(SearchView.java:1081) 
02-22 12:58:07.767: E/AndroidRuntime(1312):  at android.widget.SearchView.access$1900(SearchView.java:90) 
02-22 12:58:07.767: E/AndroidRuntime(1312):  at android.widget.SearchView$10.onTextChanged(SearchView.java:1536) 
02-22 12:58:07.767: E/AndroidRuntime(1312):  at android.widget.TextView.sendOnTextChanged(TextView.java:7577) 
02-22 12:58:07.767: E/AndroidRuntime(1312):  at android.widget.TextView.handleTextChanged(TextView.java:7617) 
02-22 12:58:07.767: E/AndroidRuntime(1312):  at android.widget.TextView$ChangeWatcher.onTextChanged(TextView.java:7990) 
02-22 12:58:07.767: E/AndroidRuntime(1312):  at android.text.SpannableStringBuilder.sendTextChange(SpannableStringBuilder.java:881) 
02-22 12:58:07.767: E/AndroidRuntime(1312):  at android.text.SpannableStringBuilder.change(SpannableStringBuilder.java:352) 
02-22 12:58:07.767: E/AndroidRuntime(1312):  at android.text.SpannableStringBuilder.change(SpannableStringBuilder.java:266) 
02-22 12:58:07.767: E/AndroidRuntime(1312):  at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:443) 
02-22 12:58:07.767: E/AndroidRuntime(1312):  at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:420) 
02-22 12:58:07.767: E/AndroidRuntime(1312):  at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:29) 
02-22 12:58:07.767: E/AndroidRuntime(1312):  at android.text.method.QwertyKeyListener.onKeyDown(QwertyKeyListener.java:218) 
02-22 12:58:07.767: E/AndroidRuntime(1312):  at android.text.method.TextKeyListener.onKeyDown(TextKeyListener.java:132) 
02-22 12:58:07.767: E/AndroidRuntime(1312):  at android.widget.TextView.doKeyDown(TextView.java:5386) 
02-22 12:58:07.767: E/AndroidRuntime(1312):  at android.widget.TextView.onKeyDown(TextView.java:5206) 
02-22 12:58:07.767: E/AndroidRuntime(1312):  at android.widget.AutoCompleteTextView.onKeyDown(AutoCompleteTextView.java:682) 
02-22 12:58:07.767: E/AndroidRuntime(1312):  at android.view.KeyEvent.dispatch(KeyEvent.java:2533) 
02-22 12:58:07.767: E/AndroidRuntime(1312):  at android.view.View.dispatchKeyEvent(View.java:5446) 
02-22 12:58:07.767: E/AndroidRuntime(1312):  at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1248) 
02-22 12:58:07.767: E/AndroidRuntime(1312):  at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1248) 
02-22 12:58:07.767: E/AndroidRuntime(1312):  at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1248) 
02-22 12:58:07.767: E/AndroidRuntime(1312):  at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1248) 
02-22 12:58:07.767: E/AndroidRuntime(1312):  at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1248) 
02-22 12:58:07.767: E/AndroidRuntime(1312):  at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1248) 
02-22 12:58:07.767: E/AndroidRuntime(1312):  at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1248) 
02-22 12:58:07.767: E/AndroidRuntime(1312):  at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1248) 
02-22 12:58:07.767: E/AndroidRuntime(1312):  at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchKeyEvent(PhoneWindow.java:1859) 
02-22 12:58:07.767: E/AndroidRuntime(1312):  at com.android.internal.policy.impl.PhoneWindow.superDispatchKeyEvent(PhoneWindow.java:1361) 
02-22 12:58:07.767: E/AndroidRuntime(1312):  at android.app.Activity.dispatchKeyEvent(Activity.java:2324) 
02-22 12:58:07.767: E/AndroidRuntime(1312):  at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:1806) 
02-22 12:58:07.767: E/AndroidRuntime(1312):  at android.view.ViewRootImpl.deliverKeyEventPostIme(ViewRootImpl.java:3300) 
02-22 12:58:07.767: E/AndroidRuntime(1312):  at android.view.ViewRootImpl.handleFinishedEvent(ViewRootImpl.java:3273) 
02-22 12:58:07.767: E/AndroidRuntime(1312):  at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2436) 
02-22 12:58:07.767: E/AndroidRuntime(1312):  at android.os.Handler.dispatchMessage(Handler.java:99) 
02-22 12:58:07.767: E/AndroidRuntime(1312):  at android.os.Looper.loop(Looper.java:137) 
02-22 12:58:07.767: E/AndroidRuntime(1312):  at android.app.ActivityThread.main(ActivityThread.java:4340) 
02-22 12:58:07.767: E/AndroidRuntime(1312):  at java.lang.reflect.Method.invokeNative(Native Method) 
02-22 12:58:07.767: E/AndroidRuntime(1312):  at java.lang.reflect.Method.invoke(Method.java:511) 
02-22 12:58:07.767: E/AndroidRuntime(1312):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
02-22 12:58:07.767: E/AndroidRuntime(1312):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
02-22 12:58:07.767: E/AndroidRuntime(1312):  at dalvik.system.NativeStart.main(Native Method) 

HIER meine Klasse

Hier ist die Source-CPP-Dateien aus, wo ich zusammengestellt und schuf die binäre "libsqliteX.so" Datei http://www.sqlite.org/android/tree?ci=trunk&re=jni|src/org/sqlite/data&expand

meine .so Datei https://www.dropbox.com/s/d0u5pyhke54tcd6/libsqliteX.so

Hier ist CDT GLOBAL BUILD KONSOLE

**** Build of configuration Default for project CustomSqlite **** 

D:\software\adt-bundle-windows-x86-20130522\adt-bundle-windows-x86-20130522\android-ndk-r9-windows-x86\android-ndk-r9\ndk-build.cmd all 
"Compile++ thumb : sqliteX <= android_database_SQLiteCommon.cpp 
"Compile++ thumb : sqliteX <= android_database_SQLiteConnection.cpp 
"Compile++ thumb : sqliteX <= android_database_SQLiteGlobal.cpp 
"Compile++ thumb : sqliteX <= android_database_SQLiteDebug.cpp 
"Compile++ thumb : sqliteX <= JNIHelp.cpp 
"Compile++ thumb : sqliteX <= JniConstants.cpp 
"Compile thumb : sqliteX <= sqlite3.c 
SharedLibrary : libsqliteX.so 
Install  : libsqliteX.so => libs/armeabi/libsqliteX.so 

**** Build Finished **** 

**** Build of configuration Default for project CustomSqlite **** 

D:\software\adt-bundle-windows-x86-20130522\adt-bundle-windows-x86-20130522\android-ndk-r9-windows-x86\android-ndk-r9\ndk-build.cmd all 
Install  : libsqliteX.so => libs/armeabi/libsqliteX.so 

**** Build Finished **** 

Diese Zeile erzeugt das Problem

native_init(localWindow); 

pls betrachtet diese

Was/Wo im falsch machen und wie dieses Problem zu überwinden ich mit diesem steckte ab 3 Tagen

Dank

+0

Bearbeiten Sie die Frage mit den C-Deklarationen/Definitionen (H und C). Drop nicht verwandten Java-Code (die nicht nativen Teile) – manuell

+0

@manuell Dieses Projekt funktioniert gut auf Android 4.1.2, aber nicht auf 4.0.3, ist das Crash-Protokoll von 4.0.3 nur Dank – Gattsu

Antwort

10

Das bedeutet, dass die Laufzeit eine passende Methode zu finden versucht, aber war erfolglos. Einige häufige Gründe dafür sind:

  • Die Bibliothek wird nicht geladen. Überprüfen Sie die logcat-Ausgabe auf Meldungen zum Laden von Bibliotheken.
  • Die Methode wird aufgrund eines Namens oder einer Signatur nicht gefunden gefunden.

Dies ist ein Fehler, der ziemlich passiert often. Sie können weitere Informationen darüber finden Sie unter:

Wann immer tun nativen Code für plattformübergreifende, jedes Detail von Ihrem toolchain fehlen wird Ihre Anwendung zum Absturz bringen.

+3

Dank ein TONN :) – Gattsu