2011-11-15 13 views
5

Sto utilizzando la libreria SQLCipher per Android per crittografare/decodificare il file DB. Sto seguendo i passaggi esatti discussi nell'API per aggiungere la libreria.Errore di collegamento insoddisfacente durante l'utilizzo della libreria SQLCipher

Ma io sono sempre un errore di collegamento insoddisfatto quando ho eseguito il progetto ... Ecco il 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) 

Si prega di darmi qualche riferimento o suggerimento.

risposta

3

è necessario aggiungere i file .so nella cartella libs/armaebi del progetto eclipse e ricostruire.

+0

E se lo avessi fatto e avessi ancora l'UnsatisfiedLinkError? – scottyab

1

Puoi condividere quale versione di SQLCipher per Android stai usando? Abbiamo recentemente rilasciato una nuova versione di SQLCipher per Android con molte modifiche. Se non si è attualmente aggiornati con l'ultima versione, è possibile ottenerlo here.

+0

ho sperimentato questa eccezione utilizzando SQLCipher RC4 v2.0. i file .so sono inclusi nel progetto ... – straya

+0

^risulta che era ancora un altro bug di Eclipse a causare questo, per cui le librerie incluse non erano effettivamente incluse. – straya

+0

@straya Dopo aver seguito il consiglio di setfault, potrei aver avuto lo stesso problema con sqlcipher v2.1.1. Non riesce a trovare "libraryName \t" stlport_shared "(id = 830025040304)". Come sei andato in giro questo? – stephen

14

java.lang.UnsatisfiedLinkError si verifica quando la libreria SQLCipher non è stata inizializzata prima dell'utilizzo.

Per risolvere il problema, chiamare SQLiteDatabase.loadLibs(this); prima dell'uso.

Ad esempio:

@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"); 
Problemi correlati