领域:Realm文件的格式无效

时间:2016-06-24 07:05:39

标签: android database realm

我在realm中使用databse processing android project。 我收到了一些关于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相关的更多信息。 因此,任何人都可以帮助我找到解决问题的解决方案或解决方法或解决崩溃原因的理论。

非常感谢!

1 个答案:

答案 0 :(得分:0)

当我将Realm从 2.0.0降级到1.0.1 (2.0.0有严重的错误)时,我遇到了同样的问题。

我解决它的方式并不聪明(甚至不接近),但它是最快的。我捕获了 IllegalArgumentException ,然后删除了Realm数据库文件。 _(ツ)_ /¯