7

我正在使用适用于 Android 的 SQLCipher 库来加密/解密数据库文件。我正在按照 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)

请给我任何参考或提示。

4

3 回答 3

15

java.lang.UnsatisfiedLinkError当 SQLCipher 库在使用前未初始化时发生。

要解决问题,请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");
于 2012-04-30T15:03:13.760 回答
3

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

于 2011-12-08T08:33:09.873 回答
1

你能分享一下你正在使用的 Android 版本的 SQLCipher 吗?我们最近发布了用于 Android 的新版本 SQLCipher,其中包含许多更改。如果您当前不是最新版本的最新版本,您可以在此处获取。

于 2011-11-15T15:15:35.587 回答