A API 'variant.getExternalNativeBuildTasks ()' está obsoleta e foi substituída por 'variant.getExternalNativeBuildProviders ()


337

Usando o Android Studio 3.3 Canary 11 com a versão do plugin gradle 3.3.0-alpha11. Emite o seguinte erro ao tentar sincronizar o gradle

WARNING: API 'variant.getExternalNativeBuildTasks()' is obsolete and has been 
replaced with 'variant.getExternalNativeBuildProviders()'.
It will be removed at the end of 2019.
For more information, see https://d.android.com/r/tools/task-configuration- 
avoidance
Affected Modules: app

Clicar no erro leva-me a esta linha no arquivo gradle

applicationVariants.all { variant ->
            variant.outputs.all {
                outputFileName = "${variant.name}-${variant.versionName}.apk"
            }
        }

O que exatamente eu preciso mudar aqui?

projeto build.gradle

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
        jcenter()
        mavenCentral() // jcenter() works as well because it pulls from Maven Central
        maven { url "https://maven.google.com" }
        google()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:3.3.0-alpha11'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
        classpath "io.realm:realm-gradle-plugin:4.1.1"
        classpath 'com.google.gms:google-services:3.2.1'
        classpath 'com.google.firebase:firebase-plugins:1.1.5'
    }
}

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

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

// Define versions in a single place
ext {
    // Sdk and tools
    minSdkVersion = 21
    targetSdkVersion = 27
    compileSdkVersion = 27
    buildToolsVersion = '27.0.3'

    // App dependencies
    supportLibraryVersion = '27.1.1'
    appCompactLibraryVersion = '27.1.1'
    playServicesVersion = '15.0.1'
    firebaseVersionCore = '16.0.1'
    firebaseVersionPerf = '16.0.0'
    firebaseVersionMessaging = '17.1.0'

    //lottie
    lottieVersion = '2.5.0'
}

app build.gradle

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

    dependencies {
        classpath 'io.fabric.tools:gradle:1.25.4'
    }
    buildscript {
        repositories {
            maven { url "https://maven.google.com" }
            maven { url 'https://maven.fabric.io/public' }
            mavenCentral()

        }

        dependencies {
            // These docs use an open ended version so that our plugin
            // can be updated quickly in response to Android tooling updates

            // We recommend changing it to the latest version from our changelog:
            // https://docs.fabric.io/android/changelog.html#fabric-gradle-plugin
            classpath 'io.fabric.tools:gradle:'
        }
    }
}
apply plugin: 'com.android.application'
apply plugin: 'com.google.firebase.firebase-perf'
repositories {
    maven { url 'https://maven.fabric.io/public' }
}

apply plugin: 'io.fabric'
apply plugin: 'realm-android'

android {

    realm {
        syncEnabled = false
    }

    dexOptions {
        javaMaxHeapSize "4g"
    }

    compileSdkVersion rootProject.ext.compileSdkVersion

    defaultConfig {
        applicationId "example.com"
        minSdkVersion rootProject.ext.minSdkVersion
        multiDexEnabled true
        versionCode mVersionCode
        versionName mVersionName
        vectorDrawables.useSupportLibrary = true

    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    buildTypes {

        applicationVariants.all { variant ->
            variant.outputs.all {
                outputFileName = "${variant.name}-${variant.versionName}.apk"
            }
        }

        release {
            shrinkResources true
            minifyEnabled true
            useProguard true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

            lintOptions {
                disable 'MissingTranslation'
            }

            applicationVariants.all { variant ->
                variant.outputs.all {
                    outputFileName = "${variant.name}-${variant.versionName}.apk"
                }
            }

        }
        debug {
            shrinkResources true
            minifyEnabled true
            useProguard true
            debuggable true
            versionNameSuffix '-DEBUG'
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'debug-proguard-rules.pro'

            ext.enableCrashlytics = false
            crunchPngs false

        }
    }

    flavorDimensions "default"

    lintOptions {

        checkReleaseBuilds false

    }

    packagingOptions {
        exclude 'META-INF/DEPENDENCIES.txt'
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/NOTICE.txt'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/notice.txt'
        exclude 'META-INF/license.txt'
        exclude 'META-INF/dependencies.txt'
        exclude 'META-INF/LGPL2.1'
    }
    buildToolsVersion '28.0.2'
}

configurations {
    implementation.exclude group: "org.apache.httpcomponents", module: "httpclient"
}

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')

    implementation "com.android.support:appcompat-v7:$rootProject.appCompactLibraryVersion"
    implementation "com.android.support:support-compat:$rootProject.supportLibraryVersion"
    implementation "com.android.support:mediarouter-v7:$rootProject.supportLibraryVersion"
    implementation "com.android.support:cardview-v7:$rootProject.supportLibraryVersion"
    implementation "com.android.support:design:$rootProject.supportLibraryVersion"


    api 'com.squareup.retrofit2:retrofit:2.4.0'
    api 'com.squareup.okhttp3:okhttp:3.11.0'
    api 'com.squareup.okhttp3:logging-interceptor:3.10.0'
    implementation 'com.google.code.gson:gson:2.8.2'
    implementation 'com.squareup.retrofit2:converter-gson:2.3.0'
    implementation 'com.squareup.picasso:picasso:2.5.2'
    implementation 'com.squareup.retrofit2:adapter-rxjava:2.3.0'
    implementation 'com.android.support:multidex:1.0.3'
    implementation 'com.daimajia.easing:library:2.0@aar'
    implementation 'com.daimajia.androidanimations:library:2.3@aar'

    implementation 'com.akexorcist:googledirectionlibrary:1.0.5'
    implementation 'io.reactivex:rxandroid:1.2.1'
    implementation 'io.reactivex:rxjava:1.3.0'
    // Wifi hotspot library
    implementation 'cc.mvdan.accesspoint:library:0.2.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    implementation 'org.jsoup:jsoup:1.10.3'
    api "com.airbnb.android:lottie:$rootProject.lottieVersion"
    implementation 'com.android.support:support-v4:27.1.1'
    implementation 'com.android.support:recyclerview-v7:27.1.1'
    testImplementation 'junit:junit:4.12'
    implementation 'com.jakewharton:butterknife:8.8.1'

    debugImplementation 'com.squareup.leakcanary:leakcanary-android:1.5.4'
    releaseImplementation 'com.squareup.leakcanary:leakcanary-android-no-op:1.5.4'

    implementation 'com.googlecode.libphonenumber:libphonenumber:8.2.0'

    implementation "com.google.android.gms:play-services-base:$rootProject.playServicesVersion"
    implementation "com.google.android.gms:play-services-cast-framework:$rootProject.playServicesVersion"
    implementation "com.google.android.gms:play-services-auth:$rootProject.playServicesVersion"
    implementation "com.google.android.gms:play-services-identity:$rootProject.playServicesVersion"
    implementation "com.google.android.gms:play-services-awareness:$rootProject.playServicesVersion"
    implementation "com.google.android.gms:play-services-cast:$rootProject.playServicesVersion"
    implementation "com.google.android.gms:play-services-drive:$rootProject.playServicesVersion"
    implementation "com.google.android.gms:play-services-location:$rootProject.playServicesVersion"
    implementation "com.google.android.gms:play-services-maps:$rootProject.playServicesVersion"

    implementation "com.google.firebase:firebase-core:$rootProject.firebaseVersionCore"
    implementation "com.google.firebase:firebase-perf:$rootProject.firebaseVersionPerf"
    implementation "com.google.firebase:firebase-messaging:$rootProject.firebaseVersionMessaging"
    implementation "com.google.firebase:firebase-analytics:$rootProject.firebaseVersionCore"


    api('com.crashlytics.sdk.android:crashlytics:2.8.0@aar') {
        transitive = true
    }
    api('com.crashlytics.sdk.android:answers:1.4.1@aar') {
        transitive = true
    }
    annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
    api project(path: ':libraryBTHelper')
    api project(':bkk_rush')

    debugApi 'com.amitshekhar.android:debug-db:1.0.3'
    api "org.jdeferred:jdeferred-android-aar:1.2.6"
    implementation 'com.android.support:gridlayout-v7:27.1.1'
}

apply plugin: 'com.google.gms.google-services'

Eu pulei algumas constantes e outras informações confidenciais no arquivo app / build.gradle.


Você pode postar seu build.gradle (app)?
Skizo-ozᴉʞS

@ Skizo-ozᴉʞS adicionou o arquivo build.gradle do projeto
Jude Fernandes


@alashow isso está relacionado ao problema diferente, a mensagem não é "API 'variant.getJavaCompile ()' é obsoleta .."
Vadim Kotov

16
Emissão existe com a versão estável, bem
KP91

Respostas:


286

O problema foi corrigido na versão mais recente 'io.fabric.tools:gradle:1.30.0'

Atualize suas ferramentas de tecido gradle com 1.30.0

buildscript {
  // ... repositories, etc. ...

   dependencies {
       // ...other dependencies ...
       classpath 'io.fabric.tools:gradle:1.30.0'
   }
}

Para obter mais detalhes https://github.com/firebase/firebase-android-sdk/issues/198#issuecomment-473435453


Altere-o no build.gradle no nível do projeto e no aplicativo.
RJB

2
Versão 1.28.0 fixa o meu problema, versão atual é 1.29.0 docs.fabric.io/android/changelog.html#fabric-gradle-plugin
Alexander Hartmann


Ainda estou recebendo esse aviso com classpath 'io.fabric.tools:gradle:1.31.0'e implementation 'com.crashlytics.sdk.android:crashlytics:2.10.1'. Ele está quebrado novamente ou não foi corrigido para todos os casos.
Gene S

Onde você conseguiu essa versão gradle de ferramentas de tecido? Eu só posso encontrar 1.25.4 mvnrepository.com/artifact/io.fabric.tools/gradle
Lachlan Jovem

248

EDITAR

Este problema foi corrigido no Fabric 1.28.0 . No nível do seu build.gradleprojeto, adicione a seguinte linha:

classpath 'io.fabric.tools:gradle:1.28.1'

Resposta Anterior

Isso acontece depois que eu atualizei o Android Studio para 3.3.0. apply plugin: 'io.fabric'é a causa. Enviei um relatório de bug à equipe do Firebase sobre esse problema.

Você tem 3 opções:

  • Aguarde até a próxima versão do plugin Fabric ser lançada. Verifique a versão mais recente aqui .

  • Faça o downgrade para o Android Studio 3.2.1 .

  • Comente o io.fabricplug - in.

No build.gradlemódulo do seu aplicativo:

apply plugin: 'com.android.application'
// apply plugin: 'io.fabric' <== this plugin causes the error

No entanto, você ainda pode criar e executar seus projetos, mesmo que esse erro apareça. Ignore isso.


2
Seria possível que você vinculasse ao relatório de bug ou problema que você abriu com o Firebase? Eu adoraria votar.
yuval 15/01/19

8
Eu tenho que usar o io.fabricplugin, então como posso remover este aviso sem alterar isso?
0xAliHn

16
Esta é a causa, não é uma solução viável
Daniel Wilson

11
Eles estão dizendo que você pode usá-lo até o final do ano de 2019. Por enquanto estou usando, vamos ver o que acontece)
support_ms

4
Por que fazer downgrade? Não faz sentido! É apenas um aviso, ainda não foi removido e pode criar seu projeto (todo o ano de 2019 ...). Eu acredito que eles irão corrigi-lo durante este ano
#

60

no aplicativo build.gradle, faça o downgrade para esta versão estável do gradle:

classpath 'com.android.tools.build:gradle:3.2.1'

Isso acontece depois que eu atualizei o Android Studio para a solução temporária 3.3, até que eles o corrigam!

edit: você não precisa fazer o downgrade do seu estúdio android!


2
Então você também deve fazer o downgrade para o Android Studio 3.2.1. Obrigado mesmo assim
Rubén Viguera

Eu tive o mesmo problema depois de atualizar o Android Studio (AS) para a versão 3.3. Consegui que o Gradle sync funcionasse novamente, desclassificando o Gradle para a versão 4.6 e o ​​Android Gradle Plugin para a versão 3.2.1, que eram as versões que eu estava usando antes da atualização do AS. Consulte a tabela aqui se tiver dúvidas sobre como modificar as versões para gradle e o plugin.
Rabie Jradi 15/01/19

6
Ele trabalhou sem diminuir qualquer coisa obrigado pela sugestão
Sid

3
você não precisa fazer o downgrade do seu estúdio Android @ RubénViguera
Amer Al Ziebak

11
Você não precisa fazer o downgrade de nada além da versão gradle, conforme mencionado na resposta. Essa deve ser a resposta aceita.
MD Danish Ansari

16

ATUALIZAÇÃO A partir de hoje, você pode usar classpath 'io.fabric.tools:gradle:1.28.0'para corrigir esse problema!

Se comentar o Crashlyticsplug io.fabric- in no arquivo gradle do aplicativo funcionou temporariamente para você

//apply plugin: 'io.fabric'

A atualização das dependências de classificação da malha no arquivo de classificação do projeto resolverá permanentemente o problema:

classpath 'io.fabric.tools:gradle:1.27.0'

NB: isso não remove os avisos, mas permite que você use o Crashlytics com AS3.3 +


@RJB Você está usando o Crashlytics? Se você removê-lo do seu projeto, ele funciona? Se sim, isso deve resolver o problema. No entanto, você ainda pode receber avisos, mas o projeto será compilado e você poderá gerar seu apk com segurança
113408

Sim. Quero dizer que ainda estou recebendo o aviso.
RJB

o op e outros (inclusive eu) tiveram esse problema e não puderam compilar o projeto com crashlyticsativado. Portanto, para manter o Crashlytics e continuar pressionando, você pode usar a atualização acima mencionada, mesmo que ela ainda acione "avisos".
113408 18/01/19

13

Não tenho certeza qual é o problema real, mas comentando as dependências relacionadas ao crashlytics do problema resolvido do projeto.


11

Está confirmado como bug para o Crashlytics e eles estão trabalhando nisso.

https://issuetracker.google.com/issues/116408637

Citado pelo responsável do Google:

je ... @ google.com # 23 23 de janeiro de 2019 01:40
Oi tudo,

Obrigado pela sua paciência.

Parece que o bug em todos os casos é proveniente de crashlytics e eu arquivei um bug com eles.

Vou mantê-lo atualizado sobre o status.

Para mim, meu aplicativo de depuração está funcionando bem no meu dispositivo apenas executando e ignorando o aviso sem comentar o Crashlytics ou o Fabric. Não tentei produzir.

Atualizar:

O Google Issue Tracker marcou esses problemas como Não corrigidos (impossível) porque todos os problemas eram do Crashlytics e permitiam que as correções fossem feitas pela equipe do Crashlytics (apesar de serem o mesmo Googler ...).

Eles sugerem seguir este link para atualizações do Crashlytics:

https://github.com/firebase/firebase-android-sdk/issues/198

Nota: Ainda estou usando o Android Studio 3.3 com io.fabric.tools:gradle:1.26.0 sem comentar nenhum dos Craslytics e funciona bem no meu aplicativo de depuração.

Atualizar:

Posso confirmar agora que ele funciona bem no meu aplicativo de versão de produção / lançamento. Como sei que funciona? Porque ele me enviou de volta um relatório de falhas -_- '

De qualquer forma, apenas ignore o aviso, eles devem corrigi-lo eventualmente.

Aww, acabei de ler que tinha consertado com tecido 1.28.0 :)


8

Últimas notícias de 24/01/2019

insira a descrição da imagem aqui

Informações aqui https://issuetracker.google.com/issues/116408637

Precisamos esperar até que o Crashlytics tenha uma solução, aqui está o problema do GitHub aberto

https://github.com/firebase/firebase-android-sdk/issues/198

A única maneira que estou usando agora para não comentar o plug-in io.fabric é desclassificar minha gradle e atualizar meu caminho de classe da malha (isso está funcionando no meu aplicativo de produção)

 dependencies {
        classpath 'com.android.tools.build:gradle:3.2.1'
        classpath 'com.google.gms:google-services:4.2.0'
        classpath 'io.fabric.tools:gradle:1.27.0'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }

Que tal adicionar -dontwarn com.crashlytics.android.Crashlyticsemproguard-rules.pro
Mustansir

11
Se você remover o aviso, fazendo que o problema ainda está lá e você vai precisar para, eventualmente, voltar para o problema novamente
Gastón Saillén

Direita! É uma solução temporária para compilar a compilação, mas é muito melhor do que desclassificar tudo.
Mustansir

Sim, fazer o desclassificação fará com que funcione. Se você ignorar o aviso, poderá manter a versão atualizada, mas ela não funcionará
Gastón Saillén

@Mustansir, acho que é um problema relacionado ao gradle e não tem nada a ver com o Proguard.
WindRider 9/03/19


3

o rastreador de problemas pode se referir a "configuração lenta de tarefas" -

isso é pelo menos o que evitar configuração de tarefas sugere.

mas é possível impedir o acesso a esse método obsoleto de BaseVariantImpl, quando variant.outputs.allnão for acessado (internamente) - ou quando as verificações puderem impedir o acesso; ou ao acessar a variante por seu nome; ou desabilitar de alguma forma as tarefas de construção nativas externas para a variante. veja também a sincronização do projeto de variante única opção de , que parece relacionada.

ou espere por ferramentas de construção 3.3.0-alpha12 ou 3.3.0-beta1... isso nem é umrelease candidate , portanto, investir muito tempo pode ser inútil - exceto usá-lo para registrar outro relatório de erro.

o novo feedback rápidobotão de feedback rápido ainda parece o mais promissor.


Sim, eu concordo, esse tipo de erro não estava presente nas ferramentas de compilação anteriores. O próximo RC pode corrigi-lo
d4c0d312

7
não foi corrigido na versão
Juan Diaz

developer.android.com/studio/releases/gradle-plugin#3-3-0 ... adicione android.debug.obsoleteApi=truepara ver de onde vem. houve alguns métodos renomeados, Provideranexados ao nome.
Martin Zeitler

11
@SergeyNarozhnyy no projeto gradle.properties
sigitbn

11
@SergeyNarozhnyy o 3.3.0lançamento quebrou algumas coisas, já que a API variante havia mudado. pode vincular uma discussão recente: stackoverflow.com/questions/54206898/… (adicionou um resumo como resposta lá).
Martin Zeitler

3

Para mim, segui estas etapas: 1. atualize a dependência Gradle no nível do projeto build.gradle.

        classpath 'io.fabric.tools:gradle:1.28.0'
  1. adicione esta dependência de plug-in abaixo: aplique o plugin: 'com.android.application' no nível do aplicativo build.gradle.

        apply plugin: 'io.fabric'
  2. Sincronize o projeto com arquivos gradle.


2

Isso acontece devido à atualização do seu Android Studio do Android Studio 3.2.0 para o Android Studio 3.3.0. Atualize suas dependências Gradle (projeto) do IO.Fabric. Gostar:

classpath 'io.fabric.tools:gradle:1.27.1'

e também atualize sua versão do Kotlin para

classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.20"

Isso resolverá esses problemas. obrigado


11
Obrigado. Sua resposta me ajudou.
André Luiz Reis

Você é sempre bem-vindo @ AndréLuizReis
Rahul Kushwaha 15/02/19

@Sean Se você estiver usando Kotlin e io febric.then Ele funciona de outra forma para trabalhar rebaixamento seu classpath version.It vontade obras ...
Rahul Kushwaha

O ID de compilação do Crashlytics está ausente. Isso ocorre quando as ferramentas Crashlytics estão ausentes na configuração de compilação do seu aplicativo.
Vishal Patoliya ツ

1

O registro de build imprime como depurar isso, especialmente o que você precisa executar com build -Pandroid.debug.obsoleteApi=true, que imprime o rastreamento de pilha da chamada para a API obsoleta e você pode descobrir qual código / plugin chama.

Se acabar sendo o seu código - use a nova API do provedor ( leia o documento Lazy Task Configuration )

Se vier de outro plug - in, informe-os com rastreamento de pilha e mensagem de aviso e talvez envie um patch. Como neste caso, está relacionado ao io.fabricproblema.


1

isso foi corrigido na versão mais recente do plugin gradle Fabric, 1.28.0, que entrou no ar hoje. Tenha isso em seu build.gradle de nível superior:

buildscript {
// ... repositories, etc. ...

dependencies {
    // ...other dependencies ...
    **classpath 'io.fabric.tools:gradle:1.28.0'**
}

0

Quando abri o projeto, pressionei o Run migrationsbotão exibido no canto inferior direito de Android Studio. Uma migração foi realizada e o problema foi resolvido sem comentar a Crashlyticsdependência.

insira a descrição da imagem aqui


0

Alterar a compatibilidade de origem no build.gradlearquivo de módulo para Java 8 corrige o problema

compileOptions {
    sourceCompatibility 1.8
    targetCompatibility 1.8
}

Certifique-se de reconstruir o projeto depois de adicionar essas linhas


No nível superior build.gradleou no módulo (/ app)?
Meow Cat 2012

nível de módulo (aplicativo)
jesses.co.tt 3/09/19

0

isso corrigirá o erro: Na barra de tarefas, clique em Ferramentas-> Kotlin-> Configurar o Kotlin no Project


0

No meu caso, eu precisava usar o io.fabricplug-in, e a solução foi atualizar para a versão gradle mais recente das ferramentas de malha:

classpath 'com.android.tools.build:gradle:3.3.0'
classpath 'io.fabric.tools:gradle:1.27.0'

0

Para aqueles que precisam manter o plug-in do Fabric aplicado, a solução temporária é voltar para a versão anterior da gradle no nível do projeto.

Altere a versão do caminho de classe para com.android.tools.build:gradle:3.2.1.


0

Foi um problema com a versão e o plug - in mais recentes gradle(no meu caso 3.3.2) Fabric.io. Agora é resolvido pela nova versão que os usuários devem ter em seu nível superior build.gradle:

buildscript {
   // ... repositories, etc. ...

    dependencies {
        // ...other dependencies ...
        classpath 'io.fabric.tools:gradle:1.28.0'
    }
}

0

Correção é atualizar os arquivos gradle de compilação raiz para os mais recentes. E essa resposta é verdadeira agora. mais uma vez, novas mudanças serão implementadas pelo gradle e pelo Android SDK. Às vezes, a resposta varia no decorrer do tempo.

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

}
dependencies {

    classpath 'com.android.tools.build:gradle:3.5.0'
    classpath 'com.google.gms:google-services:4.3.0'
    classpath 'io.fabric.tools:gradle:1.30.0'
}

-7

primeiro de tudo isso não é um erro

é aviso

e é exibido quando o gradle de atualização para 3.3.0 ocorre frequentemente porque io.fabric, então aguarde até que a versão atual do fabric fabric onde o aviso ainda seja exibido seja 'io.fabric.tools:gradle:1.27.1'

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.