6

我正在尝试使用对象库。

我阅读了官方文档并按照说明进行操作。但是,它仍然不起作用。

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

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

这是我的应用程序模块。build.gradle(应用模块)

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 (project)

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
}

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

谁能帮我解决这个问题?

4

4 回答 4

6

我想我终于找到了解决方案:重要的部分是您必须在项目级 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"

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

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

最重要的是,您必须至少创建一个@Entity类并重建项目,然后MyObjectBox才会出现。

于 2019-01-10T08:01:11.993 回答
1

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

您是否至少定义了一个@Entity 类?例如:

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

    private String name;
}

然后Build > Make project。注释处理器应该获取实体并生成您的 MyObjectBox 类。

于 2018-01-08T09:41:48.940 回答
0

这里也有问题。有 3 个实体,但未生成 MyObjectBox 类。我不得不使用 Kotlin 的高级 kapt 设置,这解决了这个问题:

kapt {
    arguments {
        arg("objectbox.modelPath", "$projectDir/schemas/objectbox.json")
    }
}

来源:https ://docs.objectbox.io/advanced/advanced-setup

于 2022-01-11T22:01:24.560 回答
0

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

最后我找到了原因。

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

像这样。您必须先定义一个 bean。这样MyObjectBox就会产生。

于 2019-03-19T08:22:04.557 回答