我尝试使用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"
关于android - Realm Kotlin 不在架构中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34103558/