使用kapt时,Realm在Java / Kotlin项目中不生成RealmProxy类

我正在尝试将领域集成到Java / Kotlin项目中,但是kapt甚至不会为.java文件生成RealmProxy类

我已经更新领域,因为这一点 ,但仍然无法正常工作

Gradle应用程序文件:

apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-kapt' apply plugin: 'realm-android' repositories { maven { url 'https://maven.fabric.io/public' } } kapt { generateStubs = true } project.ext { daggerVersion = '2.2' } dependencies { compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version" compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" kapt "com.android.databinding:compiler:2.3.3" annotationProcessor group: 'com.google.dagger', name: 'dagger-compiler', version: "${daggerVersion}" compile group: 'com.google.dagger', name: 'dagger', version: "${daggerVersion}" kapt "com.google.dagger:dagger-compiler:${daggerVersion}" provided group: 'org.glassfish', name: 'javax.annotation', version: '10.0-b28' testAnnotationProcessor group: 'com.google.dagger', name: 'dagger-compiler', version: "${daggerVersion}" testCompile group: 'com.google.dagger', name: 'dagger', version: "${daggerVersion}" androidTestAnnotationProcessor group: 'com.google.dagger', name: 'dagger-compiler', version: "${daggerVersion}" androidTestCompile group: 'com.google.dagger', name: 'dagger', version: "${daggerVersion}" } ... 

项目文件:

 buildscript { ext.kotlin_version = '1.1.3-2' repositories { jcenter() maven { url 'https://maven.fabric.io/public' } } dependencies { classpath 'com.android.tools.build:gradle:2.3.3' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath "io.realm:realm-gradle-plugin:3.5.0" } } ... 

Java模型文件:

 @RealmClass public class NotificationEventsModel extends RealmObject { @PrimaryKey private long classPK; @SerializedName("userNotificationEventsCount") private int eventsCount; } 

Kotlin模型文件:

 @RealmClass open class PageModel( open var classPK: Long = 0, open var content: String? = null, @PrimaryKey open var id: Long = 0, ) : RealmObject() { } 

我通过将realm-android插件声明为插件列表中的最后一个来解决这个问题,并且通过从annotationProcessor切换到Kapt,如下所示:

 apply plugin: 'me.tatarka.retrolambda' apply plugin: 'realm-android' apply plugin: 'kotlin-android' apply plugin: 'kotlin-kapt' apply plugin: 'realm-android' kapt 'com.android.databinding:compiler:2.3.3' compile group: 'com.google.dagger', name: 'dagger', version: "${daggerVersion}" kapt group: 'com.google.dagger', name: 'dagger-compiler', version: "${daggerVersion}" kaptTest group: 'com.google.dagger', name: 'dagger-compiler', version: "${daggerVersion}" kaptAndroidTest group: 'com.google.dagger', name: 'dagger-compiler', version: "${daggerVersion}" 

我相信你应该扩展RealmObject

 open class PageModel(...) : RealmObject() 

或者使用@RealmClass注解并实现RealmModel

 @RealmClass open class PageModel(...) : RealmModel 

或许与子类一起使用的注释是向Realm旅行的东西。

kotlin-kapt插件指示gradle使用kapt3。 也许这是相关的,Realm插件有一些问题呢? 不应该这样,因为从这个问题似乎工作,但也是一个老版本的插件(这使得它更奇怪)。