RegisterResGeneratingTask está obsoleta, use registerGeneratedFolders (FileCollection)


158

Usando o novo estúdio android com o novo plug-in 3.0.0 Gradle.
Ao criar algum aviso, aconteceu:

registerResGeneratingTask is deprecated, use
registerGeneratedFolders(FileCollection)

1
você pode mostrar suas tarefas gradle? você tem splits apk?
precisa saber é

por favor mostre seu Gradle
Jéwôm '13 /

Você já viu este artigo descrevendo o problema exato (um problema conhecido) e uma solução alternativa? (Primeiro hit no Google.)
ashleedawg

@ashleedawg o que devo fazer? atualizar o android studio? ou algumas bibliotecas?
21917 Valentin Baryshev

4
@ashleedawg A solução que você mencionou é, a menos que eu entenda mal, ficar com a versão mais antiga do plugin gradle. Esta não é uma maneira de lidar com a depreciação a longo prazo. No curto prazo, o aviso pode ser <s> ignorado </s>, mas nenhuma ação imediata é necessária.
Alex Cohn

Respostas:


46

Pelo que sei, os plug-ins adicionados como dependências do caminho de classe causam problemas. Ou seja, o Firebase teve um problema com isso. Colher e Flutter também. Fazer essa pesquisa no Google revela muitos repositórios do GitHub com um problema levantado sobre a mesma coisa, e tudo o que eles têm em comum é o fato de ser um plug-in Gradle. O tecido também parece ser uma causa, como mencionado pelo Mate *

Pelo que sei, o problema vem de um / vários plugins Gradle. Também pode ser acionado pelo seu código Gradle, mas isso provavelmente não é aplicável se o seu projeto for um aplicativo e não um plug-in Gradle.

E, como mencionado por Alex Cohn em um comentário, a depreciação é um aviso. Nesse caso, significa que é um recurso que será removido eventualmente. Portanto, por enquanto, supondo que seja um plug-in (e não feito por você), você pode ignorá-lo. No momento em que é removido, a maioria / todos os principais plugins devem ser atualizados para corrigi-lo.

E, novamente, é um aviso; não é um erro. Você ainda pode executá-lo e ignorá-lo se não houver nada a fazer sobre o problema. Desabilitar, por exemplo, o plug-in Fabric * é um exagero, pois ainda funciona.

Eu não uso o Fabric pessoalmente e o Fabric não é de código aberto; portanto, não sei se os desenvolvedores o corrigiram ou não.

TL; DR: os plugins Gradle são a causa. É um aviso (não um erro), portanto, remover os plug-ins que causam o problema é um exagero. Se você não conseguir consertá-lo, deixe-o em paz, desde que ele esteja obsoleto no momento (não removido)


Se você usa o Firebase, há uma solução específica que também é mencionada no guia de migração (vinculado posteriormente nesta postagem); excluir o módulo de goiaba

classpath ('com.google.firebase:firebase-plugins:1.1.0') {
    exclude group: 'com.google.guava', module: 'guava-jdk5'
}

O problema em si é bastante difícil de detectar. Pelo que sei, não há um problema único que o cause em todos os plugins que verifiquei (e vinculei nesta resposta). Se você codificou algo que causa o problema (e é possível corrigi-lo; a adição de um plug-in gradle de terceiros não o causa), há algumas coisas que você pode tentar consertar.

Pelo que sei da causa real, ele é resolvido atualizando o arquivo Gradle (embora na biblioteca Spoon, foi corrigido alterando uma linha relacionada a TestVariant) seguindo os tópicos no guia de migração do Gradle plugin 3.0.0.

A coisa toda é abordada pelos documentos do desenvolvedor , mas aqui estão algumas das coisas que considero relevantes com base nas solicitações de recebimento feitas em projetos em que houve um problema:

Além de atualizar a versão e o plugin Gradle, você também precisará adicionar o google()repositório em repositories.

compileé agora implementationou api, mas implementationé o recomendado.

providedé compileOnlye apkéruntimeOnly

androidTestCompiletornou-se androidTestImplementation, e testCompile->testImplementation

Se você usar sabores, precisará usar dimensões de sabor (cobertas pelos documentos).

Para tipos de compilação, é necessário incluir fallbacks caso haja uma biblioteca que não possua esse tipo de compilação. Eles são definidos no profilebloco abaixo do androidbloco.

Se ainda não o tiver feito, o plug-in gradle deve ser definido primeiro. Se você não tiver outras dependências do caminho de classe, não há problema. Mas se você fizer isso, verifique se o plug-in gradle está definido primeiro.

Se você usar testVariants, não ligue testedVariantpara a turma. Parece ser a causa da biblioteca Spoon.

Essas são, pelo que pude dizer, algumas das mudanças que foram feitas para corrigir o problema.


Mas eu não sou capaz de depurar a linha de código que mostra erro
Abhinav Gupta

FALHA: Falha na compilação com uma exceção. * O que deu errado: Falha na execução da tarefa ': app: compileDebugJavaWithJavac'. > Falha na compilação; consulte a saída de erro do compilador para obter detalhes. * Tente: Execute com a opção --stacktrace para obter o rastreamento da pilha. Execute com a opção --info ou --debug para obter mais saída de log. Execute com --scan para obter informações completas. * Obtenha mais ajuda em help.gradle.org BUILD FAILED no 4s 29 tarefas acionáveis: 2 executadas, 27 atualizadas
Abhinav Gupta

@AbhinavGupta, esse não é o stacktrace. Isso é apenas uma mensagem dizendo algo deu errado
Zoe

mas não consigo resolver isso e por causa disso não consigo instalar apk no meu dispositivo
Abhinav Gupta

@AbhinavGupta, então faça uma nova pergunta no Stack Overflow
Zoe

17

Estou usando o plug com.google.gms:google-services- in Gradle do Play Services com a versão 4.2.0.

No código fonte, podemos ver que: insira a descrição da imagem aqui

Então, para mim, esse foi o motivo dos meus avisos e não pode ser removido até que o plugin seja corrigido. A questão está aqui

Como mencionado pelo @Zoe, isso também pode vir de outros plugins Gradle.

Melhor


15

O problema foi resolvido com o plug-in de serviços do Google, versão 4.3.0 (resolvido com este commit )

buildscript {
    dependencies {
        // Change version to 4.3.0
        classpath 'com.google.gms:google-services:4.3.0'
    }
}

Encontrado aqui


10

A atualização para a versão mais recente do Fabric Gradle Plugin corrige esse problema.

No changelog:

  • Corrigido aviso de reprovação "registerResGeneratingTask".

https://docs.fabric.io/android/changelog.html#march-15-2018


O que é exatamente isso? Vale a pena atualizar? Isso causa algum problema (antes e depois da atualização)? Usamos a v2.6.8 e agora eles têm a v2.9.3, mas não vejo como ver isso no changelog. Eles têm versões diferentes lá ("1.4.2 24 de maio de 2018" por exemplo)
desenvolvedor Android

@androiddeveloper Você está confundindo o Fabric Gradle Plugin e o Crashlytics. Confira os diferentes componentes no menu esquerdo.
Eugen Pechanec

4

No meu caso, isso foi causado pela versão incompatível das bibliotecas de suporte do Android. Atualizei todos os módulos para a versão mais recente (28.0.0) e isso foi resolvido.


1

Depois de instalar o Fabric corretamente, esse problema foi resolvido para mim

import com.crashlytics.android.Crashlytics;
import io.fabric.sdk.android.Fabric;

public class MyApplication extends Application {


    @Override
    public void onCreate() {
        super.onCreate();
        Fabric.with(this, new Crashlytics());

    }
}

build.gradle

buildscript {
    repositories {
        maven { url 'https://maven.fabric.io/public' }
    }

    dependencies {
        classpath 'io.fabric.tools:gradle:1.+'
    }
}

apply plugin: 'com.android.application'
apply plugin: 'io.fabric'

dependencies {
implementation 'com.crashlytics.sdk.android:crashlytics:2.9.9'
}

repositories {
    mavenCentral()
    maven { url 'https://maven.fabric.io/public' }
}

1

Eu recebi essa mensagem de erro e muitas outras pessoas como

x-version is deprecated and use y-version instead and it'll be removed in 2019

e todo o meu projeto começou a enviar as mesmas mensagens de erro repentinamente.

O estúdio Android estava dando avisos sobre o meu programa antivírus. Eu tentei configurá-lo, mas não funcionou.

Finalmente , desinstalei o antivírus QuickHeal do meu sistema e está tudo bem agora


0

Todas as outras respostas são sobre problemas com componentes de terceiros .

Veja como atualizar seu projeto que usa registerResGeneratingTaskdiretamente:

Antes:

variant.registerResGeneratingTask generateIcon, ICON_DIR

Depois de:

variant.mergeResourcesProvider.get().dependsOn generateIcon
variant.registerGeneratedResFolders files(ICON_DIR)

0

Nível do Projeto Build.Gradle

Use a seguinte versão da dependência dos serviços do google.

dependencies {
    classpath 'com.android.tools.build:gradle:3.4.2'
    classpath 'com.google.gms:google-services:4.3.0'
    classpath ('com.google.firebase:firebase-plugins:1.1.0') {
        exclude group: 'com.google.guava', module: 'guava-jdk5'
    }
}

Problema resolvido para mim.


-2

Para mim, esse aviso desapareceu quando eu desliguei o plugin de classificação de malha, o verifique se você usa a malha ou outro plugin responsável por esse aviso.


Tecido removido, mas ainda assim esse aviso aparece.
Valentin Baryshev

Não estou usando tecido e tenho esta mensagem!
Thiagolr

3
Desativar o plugin io.fabric reduziu 8 desses avisos para 4. Parece que há mais de uma fonte.
Mario Huizinga

4
com.google.gms:google-services 4.0.1e 4.0.2ambos causam este aviso.
Martin Zeitler
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.