2011-11-15 11 views
5

Estoy utilizando la biblioteca SQLCipher para Android para cifrar/descifrar el archivo DB. Estoy siguiendo los pasos exactos que se discutieron en la API para agregar la biblioteca.Error insatisfecho de enlace al utilizar la biblioteca SQLCipher

Pero estoy recibiendo un error de enlace insatisfecho cuando corro el proyecto ... Aquí está la 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) 

Por favor, dame cualquier referencia o indirecta.

Respuesta

3

necesita agregar los archivos .so en la carpeta libs/armaeb de su proyecto de eclipse y reconstruir.

+0

¿Qué tal si lo has hecho y todavía obtienes UnsatisfiedLinkError? – scottyab

1

¿Podría compartir qué versión de SQLCipher para Android está utilizando? Recientemente hemos lanzado una nueva versión de SQLCipher para Android con muchos cambios. Si no está actualizado con el último lanzamiento, puede obtenerlo here.

+0

que he experimentado esta excepción utilizando RC4 v2.0 SQLCipher. Los archivos .so se incluyen en el proyecto ... – straya

+0

^resulta que era otro error de Eclipse que causaba esto, por lo que las bibliotecas incluidas realmente no se incluían. – straya

+0

@straya Después de seguir los consejos de setfault, es posible que haya tenido el mismo problema con sqlcipher v2.1.1. No puede encontrar "libraryName \t" stlport_shared "(id = 830025040304)". ¿Cómo te las arreglaste con esto? – stephen

14

java.lang.UnsatisfiedLinkError ocurre cuando la biblioteca SQLCipher no se inicializó antes de usar.

Para resolver el problema, llame al SQLiteDatabase.loadLibs(this); antes de usar.

Por ejemplo:

@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"); 
Cuestiones relacionadas