无法在gradle 3.0.0 beta2中配置Realm构建器

时间:2017-11-11 12:35:11

标签: android realm

我正在使用realm database在我的应用中维护产品日志。我的应用程序在配置域构建器时崩溃了。我使用以下代码来配置域构建器。

RealmConfiguration configuration = new RealmConfiguration.Builder(AddProductItems.this).build();
realm = Realm.getInstance(configuration);
realmHelper = new RealmHelper(realm);

我也尝试过这段代码。

realm = Realm.getInstance(MyActivity.this);

我仍然遇到同样的错误。我正在使用Android Studio 3.0 beta 23.0.0-beta2 of gradle version

apply plugin: 'com.android.application'
android {
    compileSdkVersion 26
    buildToolsVersion "26.0.0"
    defaultConfig {
        applicationId "come.ajay.bill"
        minSdkVersion 21
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])

    implementation 'com.android.support:appcompat-v7:26.0.0'
    implementation 'com.android.support.constraint:constraint-layout:1.0.2'
    implementation 'com.android.support:design:26.0.0'
    testImplementation 'junit:junit:4.12'

    compile 'com.android.support:recyclerview-v7:26.0.0'
    compile 'com.android.support:cardview-v7:26.0.0'
    provided 'io.realm:realm-android:0.87.5'
    annotationProcessor 'io.realm:realm-android:0.87.5'

}

gradle这个(项​​目)

buildscript {
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.0-beta2'
    }
}
allprojects {
    repositories {
        google()
        jcenter()
    }
}

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

这里我添加了我的控制台日志

enter image description here

1 个答案:

答案 0 :(得分:2)

  

提供'io.realm:realm-android:0.87.5'

这不起作用,因为这意味着你实际上并没有在你的代码中包含Realm(这就是你得到错误的原因)。

在AS 3.0中,provided应替换为compileOnly

但是在你的情况下,它应该是

implementation 'io.realm:realm-android:0.87.5'
annotationProcessor 'io.realm:realm-android:0.87.5'

(我希望有效,因为你有可能会得到以下错误 - 我没有测试过这个:

  

现在必须显式声明注释处理器。发现以下对编译类路径的依赖包含注释处理器。请将它们添加到annotationProcessor配置。

     

或者,设置android.defaultConfig.javaCompileOptions.annotationProcessorOptions.includeCompileClasspath = true以继续之前的行为。请注意,此选项已弃用,将来会被删除。     有关详细信息,请参阅https://developer.android.com/r/tools/annotation-processor-error-message.html

值得注意的是,如果使用{{1},Realm 0.88.0到2.1.1不支持annotationProcessor范围(仅apt范围,AS 3.0不支持!)在这种情况下,您需要手动执行Realm Gradle Plugin在后台执行的操作(添加正确的依赖项+注册RealmTransformer任务)

另外值得注意的是,此时的最新版本是Realm-Java 5.7.0 ,这比0.87.5要新得多。