错误:由于React native(Realm)中存在以下错误,因此需要迁移

时间:2019-04-04 12:50:43

标签: react-native npm realm apk database-migration

在为Android的特定OS版本(8.0)安装APK文件时,出现以下错误。 但是,这在开发时工作正常。

出现错误

Error: Migration is required due to the following errors:

ReactNativeJS: - Property 'Some Field' has been added.
ReactNativeJS: - Property 'other Field' has been added.

我们在React Native项目中使用Realm DB。 根据一些论坛的建议,我们已经删除了节点模块并重置了缓存,也删除了节点模块/领域。并完成了npm安装。

但是,尝试安装APK时仍显示相同的错误,但是,当我们在开发模式下运行时,不会发生此问题。

  

注意:此问题仅在特定设备(操作系统版本8.0)上发生,其他设备在   工作正常。

有什么建议吗?

2 个答案:

答案 0 :(得分:0)

使用非SDK接口的限制

为帮助确保应用程序的稳定性和兼容性,该平台限制了某些非SDK方法和字段的使用;这些限制适用于您尝试通过反射或使用JNI直接访问这些方法和字段的情况。在Android 9中,您的应用可以继续访问这些受限制的界面;该平台使用祝酒词和日志条目来引起您的注意。如果您的应用显示了这样的敬酒,那么除了限制接口之外,您还必须采用一种实施策略,这一点很重要。如果您认为没有其他可行的策略,则可以提交错误请求重新考虑该限制。​​

对非SDK接口的限制包含更多重要信息。您应该对其进行检查,以确保您的应用继续正常运行。

从Android 9(API级别28)开始,该平台限制了您的应用可以使用哪些非SDK接口。每当应用程序引用非SDK接口或尝试使用反射或JNI获取其句柄时,这些限制就会适用。设置这些限制是为了帮助改善用户和开发人员的体验,并减少用户崩溃和开发人员紧急部署的风险。有关此决定的更多信息,请参见Improving Stability by Reducing Usage of non-SDK Interfaces.

有关更多信息,请参见here

答案 1 :(得分:0)

我知道那已经晚了,但是对于任何为此而来的人来说,答案都是: Realm要求使用称为Migration的方法解决对其架构进行的任何更新。考虑到您在将应用程序从一个版本更新到另一个版本时,可能会对数据库进行一些更改,从而可能导致数据不一致。 消除此问题的最简单方法是,如果更改架构,则删除所有当前数据库数据,添加 deleteRealmIfMigrationNeeded,如下所示添加配置

Realm.open({ schema: [BookSchema], deleteRealmIfMigrationNeeded: true, })

另一种方法是按照official documentation

的说明购买自己创建的迁移