我的应用程序在使用sql密码时崩溃了

时间:2012-03-20 05:18:32

标签: android sqlcipher

我在我的应用程序中使用sql cipher(sql cipher for android)并且它与Android平板电脑以及Android 2.3以上版本一起使用。但它在Android 2.2版本中崩溃。可以任何人知道这个问题,如果是的,请给我一个解决方案。我已经包含了崩溃日志

  

03-24 05:04:26.440:E / AndroidRuntime(15069):致命异常:主要   03-24 05:04:26.440:E / AndroidRuntime(15069):info.guardianproject.database.sqlcipher.SQLiteException:不是错误   03-24 05:04:26.440:E / AndroidRuntime(15069):at info.guardianproject.database.sqlcipher.SQLiteDatabase.dbopen(Native Method)   03-24 05:04:26.440:E / AndroidRuntime(15069):在info.guardianproject.database.sqlcipher.SQLiteDatabase。(SQLiteDatabase.java:1870)   03-24 05:04:26.440:E / AndroidRuntime(15069):at info.guardianproject.database.sqlcipher.SQLiteDatabase.openDatabase(SQLiteDatabase.java:863)   03-24 05:04:26.440:E / AndroidRuntime(15069):at info.guardianproject.database.sqlcipher.SQLiteOpenHelper.getReadableDatabase(SQLiteOpenHelper.java:183)   03-24 05:04:26.440:E / AndroidRuntime(15069):在android.view.View.performClick(View.java:2408)   03-24 05:04:26.440:E / AndroidRuntime(15069):在android.view.View $ PerformClick.run(View.java:8818)   03-24 05:04:26.440:E / AndroidRuntime(15069):在android.os.Handler.handleCallback(Handler.java:587)   03-24 05:04:26.440:E / AndroidRuntime(15069):在android.os.Handler.dispatchMessage(Handler.java:92)   03-24 05:04:26.440:E / AndroidRuntime(15069):在android.os.Looper.loop(Looper.java:123)   03-24 05:04:26.440:E / AndroidRuntime(15069):在android.app.ActivityThread.main(ActivityThread.java:4627)   03-24 05:04:26.440:E / AndroidRuntime(15069):at java.lang.reflect.Method.invokeNative(Native Method)   03-24 05:04:26.440:E / AndroidRuntime(15069):at java.lang.reflect.Method.invoke(Method.java:521)   03-24 05:04:26.440:E / AndroidRuntime(15069):at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:871)   03-24 05:04:26.440:E / AndroidRuntime(15069):at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:629)   03-24 05:04:26.440:E / AndroidRuntime(15069):at dalvik.system.NativeStart.main(Native Method)

2 个答案:

答案 0 :(得分:3)

  

Android的SQLCipher依赖于ICU项目的本地化数据。在Android平台2.3及以上版本的SQLCipher for Android将尝试使用系统提供的ICU本地化数据。如果您尝试在2.3以下的受支持平台上使用SQLCipher for Android,则assets / icudt44l.zip需要作为依赖项包含在您的应用程序中。

来自https://github.com/sqlcipher/android-database-sqlcipher/issues/30

如果您在SQLCipher安装中没有该文件,可以直接在https://github.com/sqlcipher/android-database-sqlcipher/raw/master/assets/icudt46l.zip获取该zip文件

答案 1 :(得分:1)

我在这件事上发现了一个奇怪的事情。如本文所述:Android 2.3下面的http://ponystyle.com/blog/2010/03/26/dealing-with-asset-compression-in-android-apps/版本无法读取icudt46l.zip文件,因为它大于1mb。解决方案是告诉aapt(或者你是否应该使用它)不要压缩任何.zip文件。