适用于Android的SQLCipher:icudt46l.zip真的需要吗?

时间:2014-02-25 19:50:40

标签: android android-sqlite sqlcipher

我当时并不需要本地化数据文件 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?

2 个答案:

答案 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'