在kotlin(objectbox库)中不生成MyObjectBox

问题描述 投票:4回答:3

我正在尝试使用对象库。

我阅读了官方文档并按照说明操作。但是,它还没有奏效。

问题是当我尝试初始化boxStore对象时,我找不到MyObjectBox类。

val boxStore = MyObjectBox.builder().androidContext(this).build()

这是我的app模块。 build.gradle(app模块)

apply plugin: 'com.android.application'

apply plugin: 'kotlin-android'

apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'

apply plugin: 'io.objectbox'

android {
    compileSdkVersion 26
    defaultConfig {
        ....
    }
    buildTypes {
        release {
           ....
        }    
    }

    sourceSets {
        main.java.srcDirs += 'src/main/java'
    }
}

kapt {
    generateStubs = true

    arguments {
        arg("objectbox.debug", true)
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation"org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"

    ... other dependencies

    //object box
    implementation "io.objectbox:objectbox-android:$objectboxVersion"
    // some useful Kotlin extension functions
    implementation "io.objectbox:objectbox-kotlin:$objectboxVersion"
    kapt "io.objectbox:objectbox-processor:$objectboxVersion"

}

这是我的项目模块:build.gradle(项目)

buildscript {
ext.kotlin_version = '1.2.10'
//all version
ext.support_version = '26.1.0'
ext.objectboxVersion = '1.3.3'

repositories {
    google()
    jcenter()
    maven { url "http://objectbox.net/beta-repo/" }
}
dependencies {
    classpath 'com.android.tools.build:gradle:3.0.1'
    classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"

    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files

    //object box
    classpath "io.objectbox:objectbox-gradle-plugin:$objectboxVersion"
    }
}

allprojects {
    repositories {
        google()
        jcenter()
        maven { url 'https://maven.google.com' }
        maven { url "http://objectbox.net/beta-repo/" }
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

我在几个项目中寻找可能的解决方案。我也关注官方演示应用程序。但是,它仍然不适合我吗?

任何人都可以帮我解决这个问题吗?

android android-gradle kotlin objectbox
3个回答
2
投票

你的setup看起来不错。请注意,您不需要添加objectbox-androidobjectbox-kotlinobjectbox-processor依赖项。该插件将为您完成。

你是否定义了至少一个@Entity class?例如:

@Entity
public class User { 
    @Id
    private long id;

    private String name;
}

然后构建>制作项目。注释处理器应该选择实体并生成MyObjectBox类。


2
投票

我想我终于找到了解决方案,重要的是你必须在项目级gradle文件中的objectbox-gradle-plugin上面编写kotlin-gradle-plugin,代码如下所示:

classpath 'com.android.tools.build:gradle:3.2.1'
classpath "io.objectbox:objectbox-gradle-plugin:$objectboxVersion"
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"

之后,在app-level gradle中的其他apply plugin:...下添加以下行

apply plugin: 'kotlin-kapt'
apply plugin: 'io.objectbox'

然后你必须至少制作一个@Entity类并重建项目,并出现MyObjectBox


0
投票

我遇到了同样的问题。我的配置和你一样。

最后我找到了原因。

@Entity
data class Person @JvmOverloads constructor(@Id var id:Long,
                                            var name:String,
                                            var age:Int,
                                            var high:Int)

像这样。您必须首先定义一个bean。因此MyObjectBox将产生。

© www.soinside.com 2019 - 2024. All rights reserved.