SQLCipher for Android: icudt46l.zip really needed?

I expected that the icudt46l.zip localization data file is not needed, but if I do not include it in Nexus 5, I get a runtime error:

E/AndroidRuntime(4341): Caused by: net.sqlcipher.database.SQLiteException: not an error

This means that SQLCipher for Android requires a total of 7 MB of additional files :
- 2.7 MB of assets / icudt 46l.zip
- 0.2MB lib / armeabi / libdatabase_sqlcipher.so
- 2.3MB lib / armeabi / libsqlcipher_android.so
- 0.4MB lib / armeabi / libstlport_shared.so
- 0.1MB lib / commons-codec.jar
- 1.1MB lib / guava-r09.jar
- 0.1MB lib / sqlcipher.jar

Does everyone else need to include the icudt46l.zip file?

+6
source share
2 answers

Quote documentation for SQLCipher for Android :

SQLCipher for Android depends on localization data from the ICU project . SQLCipher for Android will try to use the system-provided ICU localization data file named icudt46l.dat, located in the / system / usr / icu directory, if available. If this is not found, SQLCipher for Android will try to unzip the icudt46l.zip file located in the application resource directory. It is recommended that the icudt46.zip file be included in your application for better compatibility with the platform. If you need to adjust the size of the localization data for your application, the ICA data library user interface here will be configured here .

I am not aware of any version of Android in which the ICU data provided by the system meets the requirements of SQLCipher.

+7
source

If you use gradle to get it from the maven center, you do not need to worry about its dependencies. In fact, he spilled some of these libraries, such as guava and apache commons, so much less both in size and in method.

compile 'net.zetetic:android-database-sqlcipher:3.4.0'

+1
source

All Articles