sqlcipher をバージョン 1.1 から 2.2.2 に更新しようとしています。新しいバージョンの sqlcipher は、新規インストール時または Eclipse から実行したときに正常に動作します。しかし、以前は v1.1 sqlcipher を使用していたアプリを新しい v2.2.2 で更新すると、ライブラリが正しく読み込まれません。SQLiteDatabase.loadLibs(this) を呼び出すと、アプリがクラッシュします。logcatで以下の情報を取得します
09-11 11:21:56.887: I/データベース (26277): JNI_OnLoad が呼び出されました
09-11 11:21:56.887: I/Database(26277): JNI_OnLoad 登録メソッド
09-11 11:21:56.887: E/データベース (26277): SQLiteDatabase.mNativeHandle が見つかりません
09-11 11:21:56.887: E/Cursor(26277): net/sqlcipher/database/SQLiteCompiledSql が見つかりません
09-11 11:21:56.887: E/Cursor(26277): net/sqlcipher/database/SQLiteQuery が見つかりません
09-11 11:21:56.887: E/Cursor(26277): net/sqlcipher/database/SQLiteProgram が見つかりません
09-11 11:21:56.887: E/Cursor(26277): net/sqlcipher/database/SQLiteStatement が見つかりません
09-11 11:21:56.887: E/CursorWindow(26277): net/sqlcipher/CursorWindow が見つかりません
09-11 11:21:56.903: W/dalvikvm(26277): threadid=11: キャッチされない例外で終了するスレッド (グループ = 0x40b73930)
更新: 私はプロガードを使用しています。プロガードをオフにすると、SQLiteDatabase.loadLibs(this) が正常に機能しました。しかし、今回は暗号化されたデータベースを開くことができません。データベースを開くために同じ正しいパスワードを渡しています。
09-11 14:21:48.950: I/Database(31543): sqlite が返されました: エラー コード = 26、msg = ファイルが暗号化されているか、データベースではありません
09-11 14:21:48.950: E/データベース (31543): CREATE TABLE android_metadata に失敗しました
09-11 14:21:48.965: E/Database(31543): 構築時に setLocale() に失敗し、データベースを閉じました
09-11 14:21:48.965: E/データベース (31543): net.sqlcipher.database.SQLiteException: ファイルが暗号化されているか、データベースではありません
09-11 14:21:48.965: E/データベース (31543): net.sqlcipher.database.SQLiteDatabase.native_setLocale (ネイティブ メソッド) で
09-11 14:21:48.965: E/データベース (31543): net.sqlcipher.database.SQLiteDatabase.setLocale (SQLiteDatabase.java:2102) で
09-11 14:21:48.965: E/データベース (31543): net.sqlcipher.database.SQLiteDatabase で。(SQLiteDatabase.java:1968)
09-11 14:21:48.965: E/データベース (31543): net.sqlcipher.database.SQLiteDatabase.openDatabase (SQLiteDatabase.java:901) で
09-11 14:21:48.965: E/データベース (31543): net.sqlcipher.database.SQLiteDatabase.openOrCreateDatabase (SQLiteDatabase.java:944) で
09-11 14:21:48.965: E/データベース (31543): net.sqlcipher.database.SQLiteOpenHelper.getWritableDatabase (SQLiteOpenHelper.java:107) で
09-11 14:21:48.965: E/データベース (31543): alc.rhapsody.mdd.database.DatabaseAdapter.openDatabase (DatabaseAdapter.java:234) で
09-11 14:21:48.965: E/データベース (31543): alc.rhapsody.mdd.presenter.SplashViewPresenter.getAdmissionAccess (SplashViewPresenter.java:152) で
09-11 14:21:48.965: E/データベース (31543): alc.rhapsody.mdd.presenter.SplashViewPresenter.access$2(SplashViewPresenter.java:99) で
09-11 14:21:48.965: E/データベース (31543): alc.rhapsody.mdd.presenter.SplashViewPresenter$AdmissionCtrl.doInBackground (SplashViewPresenter.java:235) で
09-11 14:21:48.965: E/データベース (31543): alc.rhapsody.mdd.presenter.SplashViewPresenter$AdmissionCtrl.doInBackground (SplashViewPresenter.java:1) で
09-11 14:21:48.965: E/データベース (31543): android.os.AsyncTask$2.call(AsyncTask.java:287) で
09-11 14:21:48.965: E/データベース (31543): java.util.concurrent.FutureTask.run (FutureTask.java:234) で
09-11 14:21:48.965: E/データベース (31543): java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1080) で
09-11 14:21:48.965: E/データベース (31543): java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:573) で
09-11 14:21:48.965: E/データベース (31543): java.lang.Thread.run (Thread.java:856) で