2011-11-15 14 views
5

Używam biblioteki SQLCipher Library dla Androida do zaszyfrowania/odszyfrowania pliku DB. Postępuję zgodnie z dokładnymi krokami omawianymi w interfejsie API, aby dodać bibliotekę.Niezadowolony błąd łącza podczas korzystania z biblioteki SQLCipher

Ale ja dostaję zadowolony błąd łącza kiedy uruchomić projekt ... Oto logcat ...

11-15 13:12:08.482: ERROR/AndroidRuntime(340): java.lang.UnsatisfiedLinkError: dbopen 
11-15 13:12:08.482: ERROR/AndroidRuntime(340):  at info.guardianproject.database.sqlcipher.SQLiteDatabase.dbopen(Native Method) 
11-15 13:12:08.482: ERROR/AndroidRuntime(340):  at info.guardianproject.database.sqlcipher.SQLiteDatabase.<init>(SQLiteDatabase.java:1876) 
11-15 13:12:08.482: ERROR/AndroidRuntime(340):  at info.guardianproject.database.sqlcipher.SQLiteDatabase.openDatabase(SQLiteDatabase.java:870) 
11-15 13:12:08.482: ERROR/AndroidRuntime(340):  at info.guardianproject.database.sqlcipher.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:904) 
11-15 13:12:08.482: ERROR/AndroidRuntime(340):  at info.guardianproject.database.sqlcipher.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:107) 
11-15 13:12:08.482: ERROR/AndroidRuntime(340):  at com.myproject1.getInstance(AppData.java:60) 

Proszę mi dać żadnych odniesień lub podpowiedź.

Odpowiedz

3

należy dodać pliki .so do folderu libs/armaebi projektu zaćmienia i odbudować.

+0

Co jeśli zrobiłeś to i nadal otrzymujesz UnsatisfiedLinkError? – scottyab

1

Czy możesz podzielić się wersją SQLCipher dla Androida, z której korzystasz? Niedawno wydaliśmy nową wersję SQLCipher na Androida z wieloma zmianami. Jeśli nie jesteś na bieżąco z najnowszą wersją, możesz ją uzyskać: here.

+0

Doświadczyłem tego wyjątku użyciu SQLCipher v2.0 RC4. .so pliki są zawarte w projekcie ... – straya

+0

^okazuje się, że był to kolejny błąd Eclipse powodujący to, przy czym zawarte biblioteki nie zostały uwzględnione. – straya

+0

@straya Po zapoznaniu się z setfault, mógłbym spotkać się z tym samym problemem z sqlciperem v2.1.1. Nie można znaleźć "libraryName \t" stlport_shared "(id = 830025040304)". Jak sobie z tym poradziłeś? – stephen

14

java.lang.UnsatisfiedLinkError dzieje się, gdy biblioteka SQLCipher nie została zainicjalizowana przed użyciem.

Aby rozwiązać problem, przed użyciem należy zadzwonić pod numer SQLiteDatabase.loadLibs(this);.

Na przykład:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    SQLiteDatabase.loadLibs(this); 

    // Set up the window layout 
    setContentView(R.layout.main); 

    //instance of database adapter 
    db = DBAdapter.getInstance(this); 

    //load database 
    db.load("password goes here"); 
Powiązane problemy