You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Native集成realm-js时Android端调用create方法出现SIGSEGV崩溃

问题根因
  • 崩溃触发在JSC引擎的setPrototypeWithCycleCheck方法,属于空指针类型的Native崩溃,触发原因是你向realm.create方法传入了自定义类Settings的实例,而非普通JSON对象。Realm的Android端JNI层需要修改传入对象的原型,对自定义类实例的处理存在兼容缺陷,最终触发崩溃。
  • 该问题仅在Android端复现,是因为iOS和Android两端的JavaScriptCore引擎对原型修改的容错实现存在差异,iOS端可以兼容自定义类实例的传入,Android端则不行。
修复方案

直接将create方法的第二个参数替换为符合Schema定义的普通对象即可,不要传入new Settings()生成的自定义类实例:

const myRealm = new Realm({path: 'settings', schema: [Settings.schema], schemaVersion: 1})

myRealm.write(() => {
  // 传入的对象属性需和Settings.schema中定义的字段完全匹配
  myRealm.create(Settings.schema.name, {
    // 示例:按你的Schema定义填入字段和对应值
    // id: 0,
    // theme: 'light',
    // notificationEnabled: true
  });
})

如果你需要复用Settings类的默认属性,可以先将实例转为普通对象再传入:

const defaultSettings = Object.assign({}, new Settings());
myRealm.write(() => {
  myRealm.create(Settings.schema.name, defaultSettings);
})
可选验证项
  • 确认Settings.schema.name的取值和Schema定义的表名完全匹配,无拼写错误
  • 确认传入对象包含所有Schema中未标记为可选的必填字段,无缺失
  • 如果你使用的Realm JS版本低于v10,建议升级到最新稳定版,该版本修复了大量Android端的原型处理兼容问题

内容的提问来源于stack exchange,提问作者SherlockFlips

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 01:57:06