La API 'variant.getExternalNativeBuildTasks ()' está obsoleta y ha sido reemplazada por 'variant.getExternalNativeBuildProviders ()

337

Usando Android Studio 3.3 Canary 11 con la versión del complemento gradle 3.3.0-alpha11. Se produce el siguiente error al intentar sincronizar 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

Hacer clic en el error me lleva a esta línea en el archivo gradle

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

¿Qué necesito cambiar exactamente aquí?

proyecto 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'

He omitido algunas constantes y otra información confidencial en el archivo app / build.gradle.

Jude Fernandes
fuente
¿Puedes publicar tu build.gradle (aplicación)?
Skizo-ozᴉʞS
@ Skizo-ozᴉʞS agregó el archivo build.gradle del proyecto
Jude Fernandes
@alashow esto está relacionado con un problema diferente, el mensaje es "API 'variant.getJavaCompile ()' está obsoleto .."
Vadim Kotov
16
También existe un problema con la versión estable
kp91

Respuestas:

286

El problema se ha solucionado en su última versión 'io.fabric.tools:gradle:1.30.0'

Actualice sus dos herramientas de tela de gradle con 1.30.0

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

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

Para más detalles https://github.com/firebase/firebase-android-sdk/issues/198#issuecomment-473435453

0xAliHn
fuente
Asegúrese de cambiarlo en build.gradle tanto en el nivel de proyecto como en la aplicación.
RJB
2
La versión 1.28.0 solucionó mi problema, la versión actual es 1.29.0 docs.fabric.io/android/changelog.html#fabric-gradle-plugin
Alexander Hartmann
Aquí está el ChangeLog: docs.fabric.io/android/changelog.html#march-15-2019
DSchmidt
Todavía recibo esta advertencia con classpath 'io.fabric.tools:gradle:1.31.0'y implementation 'com.crashlytics.sdk.android:crashlytics:2.10.1'. Está roto de nuevo o no está arreglado para todos los casos.
Gene S
¿De dónde sacaste esta versión de gradle de herramientas de tela? Solo puedo encontrar 1.25.4 mvnrepository.com/artifact/io.fabric.tools/gradle
Lachlan Young
248

EDITAR

Este problema se ha solucionado en Fabric 1.28.0 . En su build.gradlenivel de proyecto, agregue la siguiente línea:

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

Respuesta anterior

Sucede después de actualizar Android Studio a 3.3.0. apply plugin: 'io.fabric'es la causa Envié un informe de error al equipo de Firebase sobre este problema.

Tienes 3 opciones:

  • Espere hasta que se lance la próxima versión del complemento Fabric. Consulta la última versión aquí .

  • Degradar a Android Studio 3.2.1 .

  • Comenta el io.fabriccomplemento.

En build.gradleel módulo de su aplicación:

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

Sin embargo, aún puede compilar y ejecutar sus proyectos aunque aparezca este error. Simplemente ignóralo.

Anggrayudi H
fuente
2
¿Sería posible que vincule al informe de error o problema que abrió con Firebase? Me encantaría votarlo.
Yuval
8
Tengo que usar el io.fabriccomplemento, ¿cómo puedo eliminar esta advertencia sin cambiar esto?
0xAliHn
16
Esta es la causa, no una solución viable
Daniel Wilson
1
Dicen que puede usarlo hasta el final del año 2019. Por ahora estoy usando, veremos qué sucede)
support_ms
44
¿Por qué degradar? ¡Sin sentido! Es solo una advertencia, aún no se ha eliminado y puede construir su proyecto (todo el año 2019 ...). Creo que lo arreglarán durante este año
user25
60

en la aplicación build.gradle, degrada a esta versión estable de gradle:

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

¡Sucede después de actualizar Android Studio a 3.3, solución temporal hasta que lo arreglen!

editar: ¡no necesitas degradar tu estudio de Android!

Amer Al Ziebak
fuente
2
Entonces también tienes que bajar a Android Studio 3.2.1. Gracias de todos modos
Rubén Viguera
Tuve el mismo problema después de actualizar Android Studio (AS) a la versión 3.3. Obtuve la sincronización de Gradle para que funcione nuevamente al degradar Gradle a la versión 4.6 y Android Gradle Plugin a la versión 3.2.1, que era la versión que estaba usando antes de la actualización de AS. Consulte la tabla aquí si tiene dudas sobre cómo modificar las versiones para gradle y el complemento.
Rabie Jradi
66
Funcionó sin degradar nada gracias por la sugerencia
Sid
3
no necesitas degradar tu estudio de Android @ RubénViguera
Amer Al Ziebak el
1
No necesita degradar nada más que la versión gradle como se menciona en la respuesta. Esta debería ser la respuesta aceptada.
MD Danish Ansari
16

ACTUALIZAR A partir de hoy puede utilizar classpath 'io.fabric.tools:gradle:1.28.0'para solucionar este problema!

Si comentar Crashlyticsel complemento io.fabricde la aplicación gradle funciona temporalmente

//apply plugin: 'io.fabric'

Luego, actualizar sus dependencias de gradle de tela en el archivo de gradle de Project resolverá permanentemente el problema:

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

NB: esto no elimina las advertencias, pero le permite usar Crashlytics con AS3.3 +

113408
fuente
@RJB ¿Estás usando Crashlytics? Si lo elimina de su proyecto, ¿funciona? En caso afirmativo, esto debería solucionar el problema. Sin embargo, es posible que aún reciba advertencias, pero el proyecto se compilará y podrá generar su apk de forma segura
113408
Si. Quiero decir que todavía estoy recibiendo la advertencia.
RJB
El operador y otros (incluido yo) tuvieron este problema y no pudieron compilar el proyecto con crashlyticshabilitado. Por lo tanto, para mantener Crashlytics y seguir presionando para presionar, puede usar la actualización mencionada anteriormente a pesar de que aún desencadena "advertencias".
113408
13

No estoy seguro de cuál es el problema real, pero comentando las dependencias relacionadas con crashlytics del problema resuelto del proyecto.

Jude Fernandes
fuente
11

Está confirmado como error para Crashlytics y están trabajando en ello.

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

Citado del cesionario de Google:

je ... @ google.com # 23 23 de enero de 2019 01:40 AM
Hola a todos,

Gracias por su paciencia.

Parece que el error en todos los casos proviene de crashlytics y he presentado un error con ellos.

Te mantendré informado sobre el estado.

Para mí, mi aplicación de depuración funciona bien en mi dispositivo simplemente ejecutando e ignorando la advertencia sin comentar Crashlytics o Fabric. No he intentado para la producción.

Actualizar:

El Rastreador de problemas de Google marcó estos problemas como No soluciona (inviable) porque todos los problemas eran de Crashlytics, y permitió que los arreglos los hiciera el equipo de Crashlytics (a pesar de que son el mismo Googler ...).

Sugieren seguir este enlace para las actualizaciones de Crashlytics:

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

Nota: Todavía estoy usando Android Studio 3.3 con io.fabric.tools:gradle:1.26.0 sin comentar ninguno de Craslytics y funciona bien en mi aplicación de depuración.

Actualizar:

Ahora puedo confirmar que funciona bien en mi aplicación de versión de producción / lanzamiento. ¿Cómo sé que funciona? Porque me había enviado un informe de fallos -_- '

De todos modos, simplemente ignore la advertencia, deberían solucionarlo eventualmente.

Aww, acabo de leer que se había arreglado con la tela 1.28.0 :)

Ryde
fuente
8

Últimas noticias del 24/01/2019

ingrese la descripción de la imagen aquí

Información aquí https://issuetracker.google.com/issues/116408637

Tendremos que esperar hasta que Crashlytics haya encontrado una solución, aquí está abierto el problema de GitHub

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

La única forma que estoy usando ahora para no comentar el complemento io.fabric es degradar mi gradle y actualizar mi classpath de fabric (esto está funcionando en mi aplicación de producción)

 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
    }
Gastón Saillén
fuente
¿Qué tal si sólo tiene que añadir -dontwarn com.crashlytics.android.Crashlyticsenproguard-rules.pro
Mustansir
1
Si elimina la advertencia al hacer eso, el problema sigue ahí y eventualmente tendrá que volver al problema nuevamente
Gastón Saillén
¡Correcto! Es una solución temporal para compilar compilaciones, pero es mucho mejor que degradar todo.
Mustansir
Sí, degradarlo hará que funcione, si descarta la advertencia puede mantener la versión actualizada pero no funcionará
Gastón Saillén
@Mustansir, creo que es un problema relacionado con Gradle y no tiene nada que ver con Proguard.
WindRider
3

el rastreador de problemas puede referirse a "configuración de tarea diferida" -

eso es al menos lo que sugiere evitar la configuración de la tarea .

pero uno posiblemente puede evitar el acceso a este método obsoleto de BaseVariantImpl, cuando variant.outputs.allno accederá a ese método (internamente), o cuando las comprobaciones pueden impedir el acceso; o al acceder a la variante por su nombre; o de alguna manera deshabilite las tareas de compilación nativas externas para la variante. También vea la opción de sincronización de proyecto de una sola variante , que parece estar relacionada.

o esperar a las herramientas de construcción 3.3.0-alpha12 o3.3.0-beta1 ... esto ni siquiera es unrelease candidate , por lo tanto, invertir mucho tiempo podría no tener sentido, excepto usarlo para presentar otro informe de error.

El nuevo retroalimentación rápidabotón de retroalimentación rápida sigue siendo el más prometedor.

Martin Zeitler
fuente
Sí, estoy de acuerdo, este tipo de error no estaba presente en las herramientas de compilación anteriores. El próximo RC puede solucionarlo
d4c0d312
77
no se corrigió en el lanzamiento
Juan Díaz
developer.android.com/studio/releases/gradle-plugin#3-3-0 ... agregue android.debug.obsoleteApi=truepara ver de dónde viene. hubo algunos métodos renombrados, junto Providercon su nombre.
Martin Zeitler
1
@SergeyNarozhnyy en el proyecto gradle.properties
sigitbn
1
@SergeyNarozhnyy el 3.3.0lanzamiento rompió algunas cosas, ya que la API variante había cambiado. puede vincular una discusión reciente: stackoverflow.com/questions/54206898/… (se agregó un resumen como respuesta allí).
Martin Zeitler
3

Para mí, seguí estos pasos: 1. Actualice la dependencia de Gradle en el nivel de proyecto build.gradle.

        classpath 'io.fabric.tools:gradle:1.28.0'
  1. agregue esta dependencia de complemento a continuación, aplique el complemento: 'com.android.application' en el nivel de aplicación build.gradle.

        apply plugin: 'io.fabric'
  2. Sincronice el proyecto con archivos gradle.

amit pandya
fuente
2

Esto sucede debido a la actualización de su Android Studio de Android Studio 3.2.0 a Android Studio 3.3.0. Actualice sus dependencias de Gradle (proyecto) de IO.Fabric. Me gusta:

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

y también actualice su versión de Kotlin a

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

Esto resolverá estos problemas. Gracias

Rahul Kushwaha
fuente
1
Gracias. Tu respuesta me ayudó.
André Luiz Reis
@Sean Si está utilizando Kotlin y io febric. Entonces funciona de otra manera para degradar su versión classpath. Funcionará ...
Rahul Kushwaha
Falta la ID de compilación de Crashlytics. Esto ocurre cuando las herramientas Crashlytics están ausentes de la configuración de compilación de su aplicación
Vishal Patoliya ツ
1

El registro de compilación imprime cómo depurar esto, especialmente si necesita ejecutar compilar con -Pandroid.debug.obsoleteApi=true , que imprimirá el seguimiento de la pila de llamadas a la API en desuso y podrá averiguar qué plugin / código lo llama.

Si termina siendo su código , use la nueva API de proveedor ( lea el documento Lazy Task Configuration Configuration )

Si proviene de otro complemento , infórmeles con seguimiento de pila y mensaje de advertencia y tal vez envíe un parche. Como en este caso, está relacionado con el io.fabrictema.

0xAliHn
fuente
1

Esto se ha solucionado en la última versión del complemento Gradle de Fabric, 1.28.0, que se lanzó hoy. Tenga esto en su build.gradle de nivel superior:

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

dependencies {
    // ...other dependencies ...
    **classpath 'io.fabric.tools:gradle:1.28.0'**
}
Vladyslav Panchenko
fuente
0

Cuando abrí el proyecto, presioné el Run migrationsbotón que apareció en la esquina inferior derecha Android Studio. Se realizó una migración y el problema se resolvió sin comentar la Crashlyticsdependencia.

ingrese la descripción de la imagen aquí

pableiros
fuente
0

Cambiar la compatibilidad de origen en el build.gradlearchivo del módulo a Java 8 soluciona el problema

compileOptions {
    sourceCompatibility 1.8
    targetCompatibility 1.8
}

Asegúrese de reconstruir el proyecto después de agregar esas líneas

Petardo
fuente
¿En el nivel superior build.gradleo nivel de módulo (/ aplicación)?
Meow Cat 2012
nivel de módulo (aplicación)
jesses.co.tt
0

esto solucionará el error: en la barra de tareas, haga clic en Herramientas-> Kotlin-> Configurar Kotlin en Proyecto

Sadjad Abbasnia
fuente
0

En mi caso, necesitaba usar el io.fabriccomplemento, y la solución fue actualizarme a la última versión de gradle de las herramientas de tela:

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

Para aquellos que necesitan mantener el plugin Fabric aplicado, la solución temporal es volver a la versión anterior del gradle a nivel de proyecto.

Cambia la versión de classpath a com.android.tools.build:gradle:3.2.1.

Henrique Monte
fuente
0

Fue un problema con la última versión gradle(en mi caso 3.3.2) y el Fabric.iocomplemento. Ahora está resuelto por la nueva versión Los usuarios deberían tener esto en su nivel superior build.gradle:

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

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

La solución es actualizar los archivos gradle de compilación raíz a lo último. Y esta respuesta es cierta ahora. En fureture nuevamente se implementará un nuevo cambio por Gradle y Android SDK. A veces la respuesta variará a su debido tiempo.

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'
}
Pavana
fuente
-7

en primer lugar esto no es un error

es advertencia

y se muestra cuando la actualización gradle a 3.3.0 A menudo ocurre porque io.fabric, por lo tanto, espere hasta que la versión actual de fabric de actualización donde todavía se muestra la advertencia sea 'io.fabric.tools:gradle:1.27.1'

alacoo
fuente