android - Realm Kotlin 不在架构中

标签 android realm kotlin

我尝试使用Realm.io在android中存储数据,我有RealmClass

@RealmClass
public open class Alarm : RealmObject() {
   @Required
   public open var hourOfDay: Int? = null
   @Required
   public open var minute: Int? = null
   @Required
   public open var days: BooleanArray? = null

   public open var name: String? = null
}

onCreate中我尝试添加一些测试数据

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    mRealm = Realm.getInstance(activity);

    mRealm.beginTransaction()

    var a = mRealm.createObject(Alarm::class.java)
    a.hourOfDay = 12
    a.minute = 1;
    a.days = booleanArrayOf(true, true, true, true, true, false, false);
    a.name = "Test${System.currentTimeMillis()}"

    mRealm.commitTransaction()
}

但我得到了异常(exception)。

> java.lang.IllegalArgumentException: Alarm is not part of the schema for this Realm

var a = mRealm.createObject(Alarm::class.java)

我已经设置了 Realm 规则

-keep class io.realm.annotations.RealmModule
-keep @io.realm.annotations.RealmModule class *
-keep class io.realm.internal.Keep
-keep @io.realm.internal.Keep class *
-dontwarn javax.**
-dontwarn io.realm.**

> proguard-rules.pro

buildTypes {
    release {
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}
productFlavors {
    realmFlavor {
        proguardFile 'proguard-rules.pro'
    }
}

但这并没有带来解决方案

结论

到目前为止,我们似乎必须用 Java、Realm 和任何 ORM 库来编写模型 GitHub 上发布的 Kotlin 示例都有用纯 Java 编写的模型

最佳答案

“java.lang.NoClassDefFoundError:io/realm/annotations/RealmClass”

如果您遇到上述错误,您很可能必须将类似的内容添加到您的 build.gradle 中。 kapt 的底部两行是关键。

//Realm
compile 'io.realm:realm-android:0.87.1'
kapt "io.realm:realm-annotations:0.87.1"
kapt "io.realm:realm-annotations-processor:0.87.1"

根据本期底部的评论:https://github.com/realm/realm-java/issues/509

关于android - Realm Kotlin 不在架构中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34103558/

相关文章:

android - 更新后 : "SQLiteException: unable to open database file"

ios - 如何避免在 Realm 数据库中添加具有相同主键的相同数据模型?

android - Kotlin:SumbyDouble 返回附加小数

Android - 声明式与程序式 UI

android - 从网络设备的 IP 地址列表中查找打印机 IP 地址

ANDROID STUDIO 无法解析配置 ':app:debugRuntimeClasspath' 的所有依赖项

java - 使用 copyToRealmOrUpdate 方法未在 Android 中更新 Realm 数据

iOS App Rejection 由于 2.23 - Realm 数据库

android - 如何每次使用 gradle 制作方面编织 kotlin 代码

android - Koin + Retrofit 在运行时添加标题