1

我正在尝试使用 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();
    }
}

基键类:

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'
}
4

1 回答 1

0

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

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

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

然后你应该尝试重建项目。

成功构建后,注释处理生成的类应该会显示出来。


(如果您检查 repo 的 root build.gradle,那么您会看到示例可能使用的 maven repos:

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)

于 2019-03-14T19:33:08.633 回答