【发布时间】:2016-06-24 07:05:39
【问题描述】:
我在我的android project 中使用realm 代替databse processing。
我得到了一些关于crash的用户报告:
java.lang.IllegalArgumentException: Illegal Argument: Invalid format of Realm file.
at io.realm.internal.SharedGroup.createNativeWithImplicitTransactions()(SourceFile:-2)
at io.realm.internal.SharedGroup.<init>()(SourceFile:64)
at io.realm.internal.SharedGroupManager.<init>()(SourceFile:49)
at io.realm.BaseRealm.<init>()(SourceFile:77)
at io.realm.Realm.<init>()(SourceFile:138)
at io.realm.Realm.createAndValidate()(SourceFile:269)
at io.realm.Realm.createInstance()(SourceFile:249)
at io.realm.RealmCache.createRealmOrGetFromCache()(SourceFile:114)
at io.realm.Realm.getInstance()(SourceFile:213)
我在开发过程中从未遇到过崩溃,但我的用户似乎多次遇到过这种情况。 以下是我检测到崩溃的实现:
private Realm getRealmFromConfig(Context context) {
RealmConfiguration config = getRealmConfigByDBName(context, databaseName);
Realm.compactRealm(config);
return Realm.getInstance(config);
}
public RealmConfiguration getRealmConfigByDBName(Context context, String dbName) {
RealmConfiguration config = new RealmConfiguration.Builder(context)
.name(dbName)
.schemaVersion(1)
.setModules(new Module())
.deleteRealmIfMigrationNeeded()
.build();
return config;
}
崩溃日志指出崩溃发生在return Realm.getInstance(config);行
我查看了 Realm.java 文件,但仍然无法获得与消息Invalid format of Realm file 相关的更多信息。
因此,任何人都可以帮助给我一个解决方案或解决方法,以解决问题或一些关于崩溃发生原因的理论。
非常感谢!
【问题讨论】:
-
我是 Realm 开发人员。请在 github 上提交此文件,因为这听起来像是
Realm.compactRealm()中的一个潜在错误。 -
是的,@geisshirt,我在这里找到了一个主题github.com/realm/realm-java/issues/2746,但他的解决方案对我不起作用:(。所以这个错误将在下一个版本中修复,还是我必须做一些技巧?
-
如果您可以保留无效文件,如果您能将其发送给我们,我们将非常高兴。
-
正如我上面所说,我在开发时没有遇到这个问题,但我的用户得到了它。所以我很难得到无效的文件。无论如何,如果我遇到它,我会送你:)
-
提前谢谢 :-)