2017-07-26 4 views
2

Ich versuche, diese Welt zu integrieren in einem Java/Kotlin Projekt, aber Kapt erzeugt nicht RealmProxy Klassen auch für .java-DateienRealm nicht Generierung RealmProxy Klassen in Java/Kotlin Projekt bei Kapt mit

I aktualisiert haben Reich wegen this, aber immer noch nicht funktioniert

Gradle App-Datei:

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}" 
} 
... 

Projektdatei:

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 Modell-Datei:

@RealmClass 
public class NotificationEventsModel extends RealmObject { 

    @PrimaryKey 
    private long classPK; 

    @SerializedName("userNotificationEventsCount") 
    private int eventsCount; 

} 

Kotlin Modell-Datei:

@RealmClass open class PageModel(

    open var classPK: Long = 0, 
    open var content: String? = null, 
    @PrimaryKey 
    open var id: Long = 0, 

) : RealmObject() { 

} 

Antwort

1

löste ich das Problem durch die Reich-android-Plugin als die letzten in der Liste des Plug-in zu erklären und auch von annotationProcessor zu Kapt Schalt, wie unten:

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}" 
+1

verwendet. Nur als Anmerkung, mit AS 3.x müssen Sie 'retrolambda' nicht mehr verwenden. – kaneda

0

Ich glaube, Sie entweder RealmObject verlängern sollte:

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

Oder use the @RealmClass annotation and implement RealmModel:

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

Vielleicht ist die Annotation, die zusammen mit dem Unterklassen verwendet wird, was Realm angeht.

+0

ich dies bereits getan habe, aber wie gesagt in https://blog.jetbrains.com/kotlin/2015/06/bessere-annotation-processing-support-stubs-in-kapt/ javac vererbt keine vererbten Annotationen in den Klassenhierarchien. Also habe ich auch die RealmClass-Annotation –

0

kotlin-kapt Plugin weist Gradle an, kapt3 zu verwenden. Vielleicht hängt das zusammen, und das Realm-Plugin hat ein Problem damit? Sollte nicht der Fall sein, wie von this question scheint zu funktionieren, ist aber auch für eine ältere Version des Plugins (was es noch seltsamer macht).

Verwandte Themen