Google AutoValue не распознает AutoValue_CustomType - PullRequest
1 голос
/ 14 марта 2019

Я пытаюсь использовать Google AutoValue для создания HomeKey в моем проекте Android Studio, но он не распознает 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'
}

1 Ответ

0 голосов
/ 14 марта 2019

Вы используете annotationProcessor 'frankiesardo:auto-parcel:1.0.3', который размещен на clojars.

. Поэтому вы должны добавить следующий репозиторий в свой блок allprojects { в build.gradle:

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)

...