【发布时间】:2015-12-05 10:02:23
【问题描述】:
我尝试使用 Realm.io 将数据存储在我有RealmClass的android 中
@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()
}
但我得到了例外。
> java.lang.IllegalArgumentException: Alarm is not part of the schema for this Realm
var a = mRealm.createObject(Alarm::class.java)
我已经设置了领域规则
-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 编写的模型
【问题讨论】:
-
您已设置 proguard 但未启用它 release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' }
-
仍然抛出异常
-
在 pro-guard 文件中添加领域规则
-
我以前做过
-
领域文档已经说过要添加这一行,我发布了我的 proguard 文件