мое приложение падает при использовании sql-шифра - PullRequest
2 голосов
/ 20 марта 2012

Я использую sql cipher ( sql cipher для android ) в моем приложении, и он хорошо работает с планшетами Android, а также с версией выше Android 2.3. Но он падает в версии Android 2.2. Может кто-нибудь знаетОб этой проблеме, и если да, пожалуйста, дайте мне решение. Я включил журнал сбоя

03-24 05: 04: 26.440: E / AndroidRuntime (15069): FATAL EXCEPTION: main 03-2405: 04: 26.440: E / AndroidRuntime (15069): info.guardianproject.database.sqlcipher.SQLiteException: не ошибка 03-24 05: 04: 26.440: E / AndroidRuntime (15069): в info.guardianproject.database.sqlcipher.SQLiteDatabase.dbopen (собственный метод) 03-24 05: 04: 26.440: E / AndroidRuntime (15069): at info.guardianproject.database.sqlcipher.SQLiteDatabase. (SQLiteDatabase.java:1870) 03-24 05: 04: 26.440: E / AndroidRuntime (15069): по адресу info.guardianproject.database.sqlcipher.SQLiteDatabase.openDatabase (SQLiteDatabase.java:863) 03-24 05: 04: 26.440: E / AndroidRuntime (15069): по адресу 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): at 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): на java.lang.reflect.Method.invokeNative (собственный метод) 03-24 05: 04: 26.440: E / AndroidRuntime (15069): на java.lang.reflect.Method.invoke (Method.java:521) 03-24 05: 04: 26.440: E / AndroidRuntime (15069): на com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:871) 03-24 05: 04: 26.440: E / AndroidRuntime (15069): в com.android.internal.os.ZygoteInit.main (ZygoteInit.java:629) 03-24 05: 04: 26.440: E / AndroidRuntime (15069): в dalvik.system.NativeStart.main (собственный метод)

Ответы [ 2 ]

3 голосов
/ 20 марта 2012

SQLCipher для Android зависит от данных локализации из проекта ICU. На платформе Android версии 2.3 и выше SQLCipher для Android попытается использовать предоставленные системой данные локализации ICU. Если вы пытаетесь использовать SQLCipher для Android на поддерживаемой платформе ниже 2.3, assets / icudt44l.zip необходимо включить в ваше приложение как зависимость.

от https://github.com/sqlcipher/android-database-sqlcipher/issues/30

Вы можете получить этот zip-файл непосредственно по адресу https://github.com/sqlcipher/android-database-sqlcipher/raw/master/assets/icudt46l.zip, если его нет в вашей установке SQLCipher

1 голос
/ 20 августа 2012

Одна любопытная вещь, которую я обнаружил по этому вопросу.Как подробно описано в этом сообщении: http://ponystyle.com/blog/2010/03/26/dealing-with-asset-compression-in-android-apps/ версии ниже Android 2.3 не могут прочитать файл icudt46l.zip, так как он больше 1 МБ.Решение состоит в том, чтобы сообщить aapt (или proguard, если вы его используете) не сжимать файлы .zip.

...