在为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)上发生,其他设备在 工作正常。
有什么建议吗?
答案 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
的说明购买自己创建的迁移