Android 复制后sqlite数据库的MD5校验和发生变化

Android MD5 checksum of sqlite Db changes after copying

我提供了一个与应用程序打包在一起的 SQLite 数据库,它在第一次启动时被复制到 /data/data/ 文件夹。 此 Db 的内容仅供阅读,永远不会更改。

如果修改了Db,应该会在下一个App Update 中提供。 所以,我想实现一个程序,我正在考虑将打包的 Db 的 MD5 校验和与设备上的 Db 的校验和进行比较,如果发现不同则复制。

但是...将 Db 复制到设备后,校验和会立即发生变化!

有人可以解释一下这是不是预期的行为,还是我遗漏了什么?

如果这是预期的行为,那么比较 Db 的最佳方法是什么?

******* 更新 *******

我从设备中拉取复制的Db,看到系统在Db中添加了一个"android_metadata" table。所以很明显校验和不同。这回答了我的第一个问题。

第二个问题仍然悬而未决。

好的,所以解决方案是使用受支持的语言环境值预先创建 "android_metadata" table。 如果 table 存在于 Db 中,系统不会重新创建或更改它。 校验和比较工作完美!

一个万无一失的解决方案,正是我喜欢的方式!