Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将SqlCipher从1.1更新到2.2.2_Java_Android_Eclipse_Sqlcipher - Fatal编程技术网

Java 将SqlCipher从1.1更新到2.2.2

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

我正在尝试将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)


09-11 14:21:48.965:E/Database(31543):在java.lang.Thread.run(Thread.java:856)

您是否为文件提供了密码,似乎您还没有,一旦您提供了数据库,还可以使用标记中的NO_本地化的\u拼贴符

我正在传递密码。现在,我在sqlcipher开发人员的帮助下解决了这个问题。谢谢你的帮助。如果你能提供一个链接或者一些澄清解决方案的东西,那就太好了。