我当时并不需要本地化数据文件 icudt46l.zip ,但如果我没有将它包含在Nexus 5中,我会收到运行时错误:
E/AndroidRuntime(4341): Caused by: net.sqlcipher.database.SQLiteException: not an error
这意味着适用于Android的SQLCipher 总共需要 7MB的额外文件:
- 2.7MB资产/ icudt46l.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
是否其他所有人都需要包含文件icudt46l.zip?
答案 0 :(得分:7)
引用the documentation for SQLCipher for Android:
适用于Android的SQLCipher取决于the ICU project的本地化数据。 SQLCipher for Android将尝试使用位于/ system / usr / icu目录中的系统提供的ICU本地化数据文件icudt46l.dat(如果可用)。如果找不到,SQLCipher for Android将尝试解压缩位于应用程序资产目录中的icudt46l.zip文件。建议将icudt46.zip文件包含在您的应用程序中,以获得最佳平台兼容性。如果您需要调整应用程序的本地化数据大小,可以使用ICU数据库自定义程序here。
我不知道系统提供的ICU数据满足SQLCipher需求的任何Android版本。
答案 1 :(得分:1)
如果你使用gradle从maven中心获取它,你不必担心它的依赖关系。它实际上已经删除了一些这样的库,例如guava和apache commons,因此在大小和方法数量方面都要小得多。
compile 'net.zetetic:android-database-sqlcipher:3.4.0'