2011-11-15 98 views
5

我正在使用SQLCipher Library for Android來加密/解密數據庫文件。我遵循API中討論的確切步驟來添加庫。使用SQLCipher庫時出現不滿意的鏈接錯誤

但我得到一個不合適的鏈接錯誤,當我運行項目......這裏的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

您需要將.so文件添加到您的eclipse項目的libs/armae​​bi文件夾中並重建。

+0

如果你已經完成並仍然得到UnsatisfiedLinkError,那麼呢? – scottyab

1

您能分享您正在使用的Android版SQLCipher的版本嗎?我們最近發佈了一個適用於Android的SQLCipher的新版本,並進行了許多更改。如果您目前沒有及時瞭解最新版本,您可以獲得here

+0

我已經經歷了使用SQLCipher 2.0 RC4此異常。 .so文件包含在項目中......^ – straya

+0

^原來這是另一個導致這個錯誤的Eclipse錯誤,其中包含了實際包含的庫werent。 – straya

+0

@straya在遵循setfault的建議之後,我可能遇到了與sqlcipher v2.1.1相同的問題。它無法找到「libraryName \t」stlport_shared「(id = 830025040304)」。你是如何解決這個問題的? – stephen

14

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