2

私は自分のアプリでsql cipher(android用sql cipher)を使用していますが、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): 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): 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(ネイティブ メソッド) で

4

2 に答える 2

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 ファイルを取得できます。

于 2012-03-20T06:43:30.670 に答える
1

この件に関して私が発見した1つの奇妙なこと。この投稿で詳しく説明されているように: http://ponystyle.com/blog/2010/03/26/dealing-with-asset-compression-in-android-apps/ Android 2.3 未満のバージョンでは、icudt46l.zip ファイルをそのまま読み取ることはできません。 1MB以上。解決策は、.zip ファイルを圧縮しないように aapt (または使用している場合は proguard) に指示することです。

于 2012-08-20T00:00:43.223 に答える