Java 将SqlCipher从1.1更新到2.2.2
我正在尝试将sqlcipher从1.1版更新到2.2.2版。新版本的sqlcipher在新安装或从eclipse运行时工作良好。但当我用新的v2.2.2更新之前使用v1.1 sqlcipher的应用程序时,库无法正确加载。当我调用SQLiteDatabase.loadLibs(this)时,应用程序崩溃。我在日志中得到以下信息 09-11:21:56.887:I/数据库(26277):调用了JNI_OnLoad 09-11:21:56.887:I/数据库(26277):JNI_加载寄存器方法 09-11:21:56.887:E/Database(26277):找不到SQLiteDatabase.mNativeHandle 09-11:21:56.887:E/Cursor(26277):找不到net/sqlcipher/database/SQLiteCompiledSql 09-11:21:56.887:E/Cursor(26277):找不到net/sqlcipher/database/SQLiteQuery 09-11:21:56.887:E/Cursor(26277):找不到net/sqlcipher/database/SQLiteProgram 09-11:21:56.887:E/Cursor(26277):找不到net/sqlcipher/database/SQLiteStatement 09-11:21:56.887:E/CursorWindow(26277):找不到net/sqlcipher/CursorWindow 09-11:21:56.903:W/dalvikvm(26277):threadid=11:线程以未捕获异常退出(组=0x40b73930) 更新:我正在使用proguard。当我关闭proguard时,SQLiteDatabase.loadLibs(这个)工作得很好。但这次我无法打开加密的数据库。我正在传递相同的正确密码以打开数据库 09-11 14:21:48.950:I/数据库(31543):sqlite返回:错误代码=26,消息=文件已加密或不是数据库 09-11 14:21:48.950:E/数据库(31543):创建表android_元数据失败 09-11 14:21:48.965:E/Database(31543):构建时无法设置Locale(),请关闭数据库 09-11 14:21:48.965:E/数据库(31543):net.sqlcipher.Database.SQLiteException:文件已加密或不是数据库 09-11 14:21:48.965:E/Database(31543):at net.sqlcipher.Database.SQLiteDatabase.native_setLocale(native方法) 09-11 14:21:48.965:E/Database(31543):at net.sqlcipher.Database.SQLiteDatabase.setLocale(SQLiteDatabase.java:2102) 09-11 14:21:48.965:E/Database(31543):at net.sqlcipher.Database.SQLiteDatabase.(SQLiteDatabase.java:1968) 09-11 14:21:48.965:E/Database(31543):at net.sqlcipher.Database.SQLiteDatabase.openDatabase(SQLiteDatabase.java:901) 09-11 14:21:48.965:E/Database(31543):at net.sqlcipher.Database.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:944) 09-11 14:21:48.965:E/Database(31543):at net.sqlcipher.Database.SQLiteOpenHelper.getwriteabledatabase(SQLiteOpenHelper.java:107) 09-11 14:21:48.965:E/Database(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/Database(31543):在android.os.AsyncTask$2.call(AsyncTask.java:287) 09-11 14:21:48.965:E/Database(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)Java 将SqlCipher从1.1更新到2.2.2,java,android,eclipse,sqlcipher,Java,Android,Eclipse,Sqlcipher,我正在尝试将sqlcipher从1.1版更新到2.2.2版。新版本的sqlcipher在新安装或从eclipse运行时工作良好。但当我用新的v2.2.2更新之前使用v1.1 sqlcipher的应用程序时,库无法正确加载。当我调用SQLiteDatabase.loadLibs(this)时,应用程序崩溃。我在日志中得到以下信息 09-11:21:56.887:I/数据库(26277):调用了JNI_OnLoad 09-11:21:56.887:I/数据库(26277):JNI_加载寄存器方法 0
09-11 14:21:48.965:E/Database(31543):在java.lang.Thread.run(Thread.java:856)您是否为文件提供了密码,似乎您还没有,一旦您提供了数据库,还可以使用标记中的NO_本地化的\u拼贴符我正在传递密码。现在,我在sqlcipher开发人员的帮助下解决了这个问题。谢谢你的帮助。如果你能提供一个链接或者一些澄清解决方案的东西,那就太好了。