UnsatisfiedLinkError в нативном методе
Я получаю неудовлетворенную ошибку ссылки в нативном методе
Главное исключение Logcat
UnsatisfiedLinkError: Native method not found: rg.sqlite.database.sqlite.SQLiteConnection.nativeHasCodec:()Z
Полный Logcat
02-04 16:29:12.807: E/AndroidRuntime(5087): FATAL EXCEPTION: main
02-04 16:29:12.807: E/AndroidRuntime(5087): java.lang.UnsatisfiedLinkError: Native method not found: org.sqlite.database.sqlite.SQLiteConnection.nativeHasCodec:()Z
02-04 16:29:12.807: E/AndroidRuntime(5087): at org.sqlite.database.sqlite.SQLiteConnection.nativeHasCodec(Native Method)
02-04 16:29:12.807: E/AndroidRuntime(5087): at org.sqlite.database.sqlite.SQLiteConnection.hasCodec(SQLiteConnection.java:160)
02-04 16:29:12.807: E/AndroidRuntime(5087): at org.sqlite.database.sqlite.SQLiteDatabase.hasCodec(SQLiteDatabase.java:2195)
02-04 16:29:12.807: E/AndroidRuntime(5087): at org.sqlite.database.sqlite.SQLiteConnectionPool.setMaxConnectionPoolSizeLocked(SQLiteConnectionPool.java:952)
02-04 16:29:12.807: E/AndroidRuntime(5087): at org.sqlite.database.sqlite.SQLiteConnectionPool.(SQLiteConnectionPool.java:153)
02-04 16:29:12.807: E/AndroidRuntime(5087): at org.sqlite.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:179)
02-04 16:29:12.807: E/AndroidRuntime(5087): at org.sqlite.database.sqlite.SQLiteDatabase.openInner(SQLiteDatabase.java:804)
02-04 16:29:12.807: E/AndroidRuntime(5087): at org.sqlite.database.sqlite.SQLiteDatabase.open(SQLiteDatabase.java:789)
02-04 16:29:12.807: E/AndroidRuntime(5087): at org.sqlite.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:694)
02-04 16:29:12.807: E/AndroidRuntime(5087): at org.sqlite.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:669)
02-04 16:29:12.807: E/AndroidRuntime(5087): at com.example.samplesqlitedb.SearchDataDB.getAutoSuggestion(SearchDataDB.java:33)
02-04 16:29:12.807: E/AndroidRuntime(5087): at com.example.samplesqlitedb.MainActivity$2.onClick(MainActivity.java:56)
02-04 16:29:12.807: E/AndroidRuntime(5087): at android.view.View.performClick(View.java:4084)
02-04 16:29:12.807: E/AndroidRuntime(5087): at android.view.View$PerformClick.run(View.java:16966)
02-04 16:29:12.807: E/AndroidRuntime(5087): at android.os.Handler.handleCallback(Handler.java:615)
02-04 16:29:12.807: E/AndroidRuntime(5087): at android.os.Handler.dispatchMessage(Handler.java:92)
02-04 16:29:12.807: E/AndroidRuntime(5087): at android.os.Looper.loop(Looper.java:137)
02-04 16:29:12.807: E/AndroidRuntime(5087): at android.app.ActivityThread.main(ActivityThread.java:4745)
02-04 16:29:12.807: E/AndroidRuntime(5087): at java.lang.reflect.Method.invokeNative(Native Method)
02-04 16:29:12.807: E/AndroidRuntime(5087): at java.lang.reflect.Method.invoke(Method.java:511)
02-04 16:29:12.807: E/AndroidRuntime(5087): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
02-04 16:29:12.807: E/AndroidRuntime(5087): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
02-04 16:29:12.807: E/AndroidRuntime(5087): at dalvik.system.NativeStart.main(Native Method)
Пользовательский файл Java SQLiteConnectionhttps://www.dropbox.com/s/5ex6u9rzkwb7kqq/SQLiteConnection.java ошибка в строке № 160
Вот исходные файлы cpp, из которых я скомпилировал и создал бинарный файл »libsqliteX.so» файлhttp://www.sqlite.org/android/tree?ci=trunk&Re = JNI | SRC / орг / SQLite / данные &расширять
мой .so файлhttps://www.dropbox.com/s/d0u5pyhke54tcd6/libsqliteX.so
так что я думаю, что я должен изменить в нативном методе, чтобы решить эту проблему
static jboolean nativeHasCodec(JNIEnv* env, jobject clazz){
#ifdef SQLITE_HAS_CODEC
return true;
#else
return false;
#endif
}
Вот CDT GLOBAL BUILD CONSOLE
**** 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 0) {
c.moveToFirst();
do {
list1.add(c.getString(0));
} while (c.moveToNext());
}
myTV.append("\n\nANTONYMS "+list1.toString());
db.close();
}
class MyHelper extends SQLiteOpenHelper {
public MyHelper(Context ctx) {
super(ctx, DB_PATH.getPath(), null, 1);
}
public void onConfigure(SQLiteDatabase db) {
db.execSQL("PRAGMA key = 'secret'");
}
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE t1(x)");
}
public void onUpgrade(SQLiteDatabase db, int iOld, int iNew) {
}
}
/*
* * If this is a SEE build, check that SQLiteOpenHelper still works.
*/
public void def() throws Exception {
DB_PATH = new File("/storage/sdcard1/sk2.db");
String DEFINITION = "select pos, definition, sample FROM word INNER JOIN sense ON word.wordid = sense.wordid INNER JOIN synset ON sense.synsetid = synset.synsetid LEFT JOIN sample ON sample.synsetid = synset.synsetid WHERE lemma ='"+ searchedword + "'";
SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(DB_PATH, null);
ArrayList list1 = new ArrayList();
Cursor mcursor = db.rawQuery(DEFINITION, null);
mcursor.moveToFirst();
if (mcursor.getCount() > 0) {
do {
list1.add(mcursor.getString(1));
} while (mcursor.moveToNext());
}
myTV.append("\nDEFINATION " + list1.toString());
db.close();
}
public void run_the_tests(View view) {
System.loadLibrary("sqliteX");
myTV.setText("");
searchedword = query.getText().toString();
try {
report_version();
def();
syno();
anto();
} catch (Exception e) {
myTV.append("Exception: " + e.toString() + "\n");
myTV.append(android.util.Log.getStackTraceString(e) + "\n");
}
}
}
Спасибо