使用SQLCipher库时出现不满意的链接错误

时间:2011-11-15 13:00:50

标签: android sqlcipher

我正在使用Android的SQLCipher Library来加密/解密DB文件。我遵循API中讨论的添加库的确切步骤。

但是当我运行项目时,我收到一个不满意的链接错误......这是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)

请给我任何参考或提示。

3 个答案:

答案 0 :(得分:14)

在使用之前未初始化SQLCipher库时会发生

java.lang.UnsatisfiedLinkError

要解决此问题,请在使用前致电SQLiteDatabase.loadLibs(this);

例如:

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

答案 1 :(得分:3)

您需要将.so文件添加到eclipse项目的libs / armae​​bi文件夹中并重建。

答案 2 :(得分:1)

您可以分享您正在使用的Android版SQLCipher吗?我们最近发布了适用于Android的新版SQLCipher,并进行了许多更改。如果您目前没有与最新版本进行更新,则可以获得here