java.lang.UnsatisfiedLinkError: dbopen
Я пытаюсь написать тестовый пример Android для блока кода в приложении для Android. Блок кода будет взаимодействовать с базой данных (функции библиотеки sqlcipher), в частности с функцией dbopen (). При запуске приложения оно работает нормально. Когда мы пытались выполнить контрольный пример для этого блока кода (который включает взаимодействие с базой данных). Это дает следующую ошибку: java.lang.UnsatisfiedLinkError: dbopen
Может ли кто-нибудь разобраться в этом и предложить.
Тестовый пример не может иметь полномочия для вызова функции, вызывающей библиотечные функции sqlcipher. Требуются ли какие-либо разрешения или есть какие-то особые процедуры для этого типа тестовых случаев?
полный журнал ошибок:
<code> 04-30 12:08:33.997: I/TestRunner(2169): started: teststateMachine(com.americanlogistics.mdd.rhapsody.view.test.SigninViewsateMachineTest) 04-30 12:08:34.147: W/dalvikvm(2169): No implementation found for native Linfo/guardianproject/database/sqlcipher/SQLiteDatabase;.dbopen (Ljava/lang/String;I)V 04-30 12:08:34.164: I/TestRunner(2169): failed: teststateMachine(com.americanlogistics.mdd.rhapsody.view.test.SigninViewsateMachineTest) 04-30 12:08:34.164: I/TestRunner(2169): ----- begin exception ----- 04-30 12:08:34.184: I/TestRunner(2169): java.lang.UnsatisfiedLinkError: dbopen 04-30 12:08:34.184: I/TestRunner(2169): at info.guardianproject.database.sqlcipher.SQLiteDatabase.dbopen(Native Method) 04-30 12:08:34.184: I/TestRunner(2169): at info.guardianproject.database.sqlcipher.SQLiteDatabase.<init>(SQLiteDatabase.java:1870) 04-30 12:08:34.184: I/TestRunner(2169): at info.guardianproject.database.sqlcipher.SQLiteDatabase.openDatabase(SQLiteDatabase.java:863) 04-30 12:08:34.184: I/TestRunner(2169): at info.guardianproject.database.sqlcipher.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:897) 04-30 12:08:34.184: I/TestRunner(2169): at info.guardianproject.database.sqlcipher.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:107) 04-30 12:08:34.184: I/TestRunner(2169): at com.americanlogistics.mdd.rhapsody.database.SendQueueDBAdapter.open(SendQueueDBAdapter.java:45) 04-30 12:08:34.184: I/TestRunner(2169): at com.americanlogistics.mdd.rhapsody.database.SendQueueDBAdapter.databaseHelperInstance(SendQueueDBAdapter.java:38) 04-30 12:08:34.184: I/TestRunner(2169): at com.americanlogistics.mdd.rhapsody.common.ApplicationController.startDatabase(ApplicationController.java:530) 04-30 12:08:34.184: I/TestRunner(2169): at com.americanlogistics.mdd.rhapsody.view.test.SigninViewsateMachineTest.teststateMachine(SigninViewsateMachineTest.java:61) 04-30 12:08:34.184: I/TestRunner(2169): at java.lang.reflect.Method.invokeNative(Native Method) 04-30 12:08:34.184: I/TestRunner(2169): at java.lang.reflect.Method.invoke(Method.java:507) 04-30 12:08:34.184: I/TestRunner(2169): at junit.framework.TestCase.runTest(TestCase.java:154) 04-30 12:08:34.184: I/TestRunner(2169): at junit.framework.TestCase.runBare(TestCase.java:127) 04-30 12:08:34.184: I/TestRunner(2169): at junit.framework.TestResult$1.protect(TestResult.java:106) 04-30 12:08:34.184: I/TestRunner(2169): at junit.framework.TestResult.runProtected(TestResult.java:124) 04-30 12:08:34.184: I/TestRunner(2169): at junit.framework.TestResult.run(TestResult.java:109) 04-30 12:08:34.184: I/TestRunner(2169): at junit.framework.TestCase.run(TestCase.java:118) 04-30 12:08:34.184: I/TestRunner(2169): at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169) 04-30 12:08:34.184: I/TestRunner(2169): at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:154) 04-30 12:08:34.184: I/TestRunner(2169): at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:529) 04-30 12:08:34.184: I/TestRunner(2169): at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1448) 04-30 12:08:34.184: I/TestRunner(2169): ----- end exception ----- </code>
Код:
Следующая строка в тестовом примере косвенно вызывает библиотечную функцию sqlcipher.
. ApplicationController.getInstance () startDatabase (this.getContext () getApplicationContext ().);