gpt4 book ai didi

android - Realm Gradle 插件似乎破坏了 Dagger 的 apt 代码生成

转载 作者:行者123 更新时间:2023-12-03 06:09:00 26 4
gpt4 key购买 nike

因此,我对 0.88 中添加的新 Realm 功能感到非常兴奋,并希望在我的项目中使用它们。不幸的是,在 0.88+ 中,现在需要使用名为 realm-android 的 Gradle 插件。

我也在使用 Dagger 1,它需要一个代码生成步骤(我为此使用了 apt)。当我应用 realm-android 插件时,一切都编译得很好,但我很害怕

Module adapter for class could not be loaded

表明编译器没有正确生成文件。如果我删除 Realm 插件, Dagger 会正确生成文件。我怎样才能让 Realm 和 Dagger 与这个新的插件机制一起玩得很好?

build.gradle(项目级别):(针对相关性进行了编辑)
buildscript {
repositories {
jcenter()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.5.0'
classpath 'io.realm:realm-gradle-plugin:0.88.2'
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
}
}

build.gradle(模块级别):(针对相关性进行了编辑)
apply plugin: 'com.android.application'
apply plugin: 'realm-android'
apply plugin: 'com.neenbedankt.android-apt'

android {
compileSdkVersion 23
buildToolsVersion '23.0.2'
dexOptions {
jumboMode = true
}

defaultConfig {
applicationId "xx.xx.xx"
minSdkVersion 15
targetSdkVersion 23
multiDexEnabled true
}

def daggerVersion = '1.2.2'

dependencies {
apt "com.squareup.dagger:dagger-compiler:$daggerVersion"
compile "com.squareup.dagger:dagger:$daggerVersion"
}

2016 年 4 月 2 日编辑

好吧,事情变得越来越奇怪,我想知道我是不是在这里追鬼。我注意到这不仅仅是插件的添加,而且至少存在两个 Realm 模型。有两个模型 X 和 Y,APT 不能为 Dagger 运行,我得到同样的错误。有 0 或 1 个模型(X 或 Y)并且它运行没有错误。我没有以任何方式使用模型,我什至没有实例化一个 Realm 。举一个具体的例子,这里有两个我正在使用的数据模型,它们表现出这种行为。
import io.realm.RealmObject;
import io.realm.annotations.PrimaryKey;
import io.realm.annotations.Required;

public class ContactEmail extends RealmObject {
@PrimaryKey
private String localGuid;
@Required
private String email;

public String getLocalGuid() {
return localGuid;
}

public void setLocalGuid(String localGuid) {
this.localGuid = localGuid;
}

public String getEmail() {
return email;
}

public void setEmail(String email) {
this.email = email;
}
}


import io.realm.RealmObject;
import io.realm.annotations.PrimaryKey;
import io.realm.annotations.Required;

public class ContactPhone extends RealmObject {
@PrimaryKey
private String localGuid;
@Required
private String phone;

public String getLocalGuid() {
return localGuid;
}

public void setLocalGuid(String localGuid) {
this.localGuid = localGuid;
}

public String getPhone() {
return phone;
}

public void setPhone(String phone) {
this.phone = phone;
}
}

最佳答案

似乎 Realm 正在自行应用 APT 插件(在此 line 上)。因此,尝试删除 android-apt 插件行。

当我评估一个使用 Butterknife 8 并且没有声明 android-apt 插件而只声明 Realm 插件的 Android 项目时,这让我措手不及。

关于android - Realm Gradle 插件似乎破坏了 Dagger 的 apt 代码生成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36369263/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com