添加Realm类后无法构建Android项目

时间:2016-09-13 14:30:08

标签: android realm kotlin

我已经使用Kotlin创建了SelfGeneration Realm类,并在添加项目不再构建之后。我该如何解决这个问题?

@RealmClass open class SelfGeneration() : BaseRealmObject {
    @PrimaryKey override var id: Int? = null
    open var type: ItemType? = null
    open var model: String? = null
    open var watt: Int? = null
    companion object {
        fun getById(id: Int): SelfGeneration {
            val realm = Realm.getDefaultInstance()
            val selfGeneration = realm.where(SelfGeneration::class.java)
                    .equalTo(BaseRealmObject.Field.ID, id)
                    .findFirst()
            return realm.copyFromRealm(selfGeneration)
        }
    }
}

依赖关系:

dependencies {
    classpath com.android.tools.build:gradle:2.1.3
    classpath io.realm:realm-gradle-plugin:1.2.0
    classpath com.neenbedankt.gradle.plugins:android-apt:1.8
    classpath "com.fernandocejas.frodo:frodo-plugin:0.8.1
}

Gradle错误:

  

错误:任务javassist的执行失败   NotFoundException:com.theappsolution.conectric.model.SelfGeneration

1 个答案:

答案 0 :(得分:2)

Android Studio 即时运行功能和Realm不兼容。使用此功能可能会导致许多非显而易见的错误以及编译时或运行时。包括您报告的那个。

在Android中,当使用 Instant Run 功能时,一些执行字节代码操作的插件可能无法正常运行。在documentation for Instant Run中它说:

  

执行字节码增强的某些第三方插件可能会导致Instant Run对您的应用进行监控的问题。如果您遇到这些问题,但想继续使用Instant Run,则应该为调试版本变体禁用这些插件。您还可以通过提交错误来帮助改善与第三方插件的兼容性

在编译时

领域talks about their change to use bytecode weaving所以这是在编译时或运行时可能会与 Instant Run 分解的插件类型。确实在Realm issue 1832他们谈论即时运行的问题(在Realm问题跟踪器中有超过28 issues with the phrase "Instant Run")。此外,其他Stack Overflow问题也讨论了这些问题,例如:Realm causes my app to crash when trying to build a RealmConfiguration

目前唯一的解决方案是禁用Android Studio首选项中的 Instant Run 功能,清理项目,然后重新构建/运行。