Google AutoValue无法识别AutoValue_CustomType

2020年5月15日 8点热度 0条评论

我正在尝试使用Google AutoValue在我的Android Studio项目中生成HomeKey,但是它无法重新显示AutoValue_HomeKey()(请参见下面的注释代码)。使用的gradle版本:4.10.1

我的Android项目基于以下示例之一:
https://github.com/Zhuinden/simple-stack/tree/master/simple-stack-example-basic-java-fragment

我是否忘记应用插件或实现了错误的软件包?

HomeKey类:

import com.google.auto.value.AutoValue;

@AutoValue
public abstract class HomeKey extends BaseKey {
    public static HomeKey create() {

        /*
            Cannot resolve AutoValue_HomeKey()
        */
        return new AutoValue_HomeKey(); 
    }

    @Override
    protected BaseFragment createFragment() {
        return new HomeFragment();
    }
}

BaseKey类:

import android.os.Bundle;
import android.os.Parcelable;

import gamf.tankolaskonyvelo.fragment.BaseFragment;

public abstract class BaseKey implements Parcelable {
    public String getFragmentTag() {
        return toString();
    }

    public final BaseFragment newFragment() {
        BaseFragment fragment = createFragment();
        Bundle bundle = fragment.getArguments();
        if (bundle == null) {
            bundle = new Bundle();
        }
        bundle.putParcelable("KEY", this);
        fragment.setArguments(bundle);
        return fragment;
    }

    protected abstract BaseFragment createFragment();
    }
}

项目级别build.gradle:

buildscript {
    repositories {
        google()
        jcenter()
        mavenCentral()
        maven {url "https://jitpack.io" }

    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.3.2'
        classpath 'com.jakewharton:butterknife-gradle-plugin:10.1.0'
        classpath 'com.google.gms:google-services:3.2.1'
    }
}


allprojects {
    repositories {
        google()
        jcenter()
        maven { url "https://jitpack.io" }

    }
}

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

应用程序级别build.gradle:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 26
    defaultConfig {
        applicationId "gamf.tankolaskonyvelo"
        minSdkVersion 20
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    androidTestImplementation('com.android.support.test.espresso:espresso-    core:3.0.1', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:26.1.0'
    implementation 'com.android.support:support-v4:26.1.0'
    implementation 'com.android.support:design:26.1.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
    implementation 'com.android.support:recyclerview-v7:26.1.0'
    implementation 'com.android.support:cardview-v7:26.1.0'
    implementation 'com.github.Zhuinden:simple-stack:1.13.4'
    implementation 'com.jakewharton:butterknife:10.1.0'
    annotationProcessor 'com.jakewharton:butterknife-compiler:10.1.0'

    implementation "com.google.auto.value:auto-value-annotations:1.6.2"
    annotationProcessor "com.google.auto.value:auto-value:1.6.2"
    annotationProcessor 'frankiesardo:auto-parcel:1.0.3'
}

解决方案如下:

您正在使用annotationProcessor 'frankiesardo:auto-parcel:1.0.3'托管的clojars

因此,您应该将以下存储库添加到build.gradle中的allprojects {块中:

maven { url "https://clojars.org/repo/" }

然后,您应该尝试重建项目。

成功构建后,应显示通过注释处理生成的类。

(如果您检查了回购的根目录build.gradle,那么您会看到示例可能使用的Maven回购:

repositories {
    google()
    mavenCentral()
    maven { url "https://clojars.org/repo/" }
    maven { url "https://jitpack.io" }
    maven { url 'https://maven.google.com' }
    jcenter()
}

因此,即使该库本身托管在
jitpack.io上,该示例的依赖项
auto-parcel也在clojars上)