android - La API ''variant.getExternalNativeBuildTasks()'' está obsoleta y se ha reemplazado por ''variant.getExternalNativeBuildProviders()
firebase gradle (20)
Últimas noticias del 24/01/2019
Información aquí issuetracker.google.com/issues/116408637
Tendremos que esperar hasta que Crashlytics encuentre una solución, aquí está el problema de GitHub abierto
https://github.com/firebase/firebase-android-sdk/issues/198
La única forma en que estoy usando ahora mismo para no comentar el complemento io.fabric es degradar mi gradle y actualizar mi ruta de clase de la tela (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
}
Usando Android Studio 3.3 Canary 11 con el plugin gradle versión
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
Al hacer clic en el error me lleva a esta línea en el archivo de gradle
applicationVariants.all { variant ->
variant.outputs.all {
outputFileName = "${variant.name}-${variant.versionName}.apk"
}
}
¿Qué es exactamente lo que necesito cambiar 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''
}
aplicación 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.
Cambiar la compatibilidad de origen en el archivo
build.gradle
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
Como se dijo, el problema está en Fabric / Crashlytics.
apply plugin: ''io.fabric''
Es un error en el lado de Crashlytics / Firebase, revise el siguiente enlace y vea el estado del error: https://github.com/firebase/firebase-android-sdk/issues/198
El problema se ha solucionado en su última versión
''io.fabric.tools:gradle:1.30.0''
Por favor, actualice sus dos herramientas de tela gradle con 1.30.0
buildscript {
// ... repositories, etc. ...
dependencies {
// ...other dependencies ...
classpath ''io.fabric.tools:gradle:1.28.0''
}
}
Para obtener más detalles, https://github.com/firebase/firebase-android-sdk/issues/198#issuecomment-473435453
El registro de compilación imprime cómo depurar esto, en particular, debe ejecutar la compilación con
-Pandroid.debug.obsoleteApi=true
, que imprimirá el seguimiento de la pila de la llamada a la API en desuso y podrá averiguar qué plugin / código lo llama .
Si termina siendo su código , use la nueva API del proveedor ( lea el documento de configuración de Lazy Task )
Si proviene de otro complemento
, infórmeselo con un seguimiento de la pila y un mensaje de advertencia y quizás envíe un parche.
Como en este caso está relacionado con el tema
io.fabric
.
En mi caso, necesitaba usar el complemento
io.fabric
, y la solución fue actualizar a la última versión de herramientas de tejido de Gradle:
classpath ''com.android.tools.build:gradle:3.3.0''
classpath ''io.fabric.tools:gradle:1.27.0''
En primer lugar esto no es un error.
es una advertencia
y se muestra cuando la actualización gradle a 3.3.0 Ocurre a menudo porque io.fabric, así que espere hasta que la actualización de la versión actual de la estructura donde todavía aparece la advertencia sea ''io.fabric.tools:gradle:1.27.1''
Está confirmado como error para Crashlytics y están trabajando en ello.
issuetracker.google.com/issues/116408637
Citado por el cesionario de Google:
je ... @ google.com # 23 ene 23, 2019 01:40 a.m.
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 lo he intentado para producción.
Actualizar:
Google Issue Tracker marcó estos problemas como No se solucionará (Inactivo) porque todos los problemas fueron de Crashlytics, y dejó que el equipo de Crashlytics corrigiera (a pesar de que son el mismo Googler ...).
Sugieren seguir este enlace para 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 nada 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 colisión ...
De todos modos, solo ignora la advertencia, deberían arreglarlo eventualmente.
Aww, acabo de leer que había arreglado con tela 1.28.0 :)
Esto se ha corregido en la última versión del plugin Fabric gradle, 1.28.0, que se lanzó hoy. Tenga esto en su nivel superior build.gradle:
buildscript {
// ... repositories, etc. ...
dependencies {
// ...other dependencies ...
**classpath ''io.fabric.tools:gradle:1.28.0''**
}
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 actualizar su versión de Kotlin para
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.20"
Esto resolverá estos problemas. Gracias
Fue un problema con la última
gradle
(en mi caso
3.3.2
) y el complemento
Fabric.io
.
Ahora se resuelve con la nueva versión. Los usuarios deberían tener esto en su nivel superior de
build.gradle
:
buildscript {
// ... repositories, etc. ...
dependencies {
// ...other dependencies ...
classpath ''io.fabric.tools:gradle:1.28.0''
}
}
No estoy seguro de cuál es el problema real, pero comentar las dependencias relacionadas con crashlytics del problema resuelto del proyecto.
Para aquellos que necesitan mantener el complemento de Fabric aplicado, la solución temporal es volver a la versión anterior de Gradle en el nivel del proyecto.
Cambie la versión de classpath a
com.android.tools.build:gradle:3.2.1
.
Para mí, seguí estos pasos: 1. actualizar la dependencia de Gradle en el nivel de proyecto build.gradle.
classpath ''io.fabric.tools:gradle:1.28.0''
-
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''
-
Sincroniza el proyecto con archivos gradle.
el rastreador de problemas puede referirse a "configuración de tareas perezosas" -
eso es al menos lo que sugiere evitar la configuración de tareas .
pero posiblemente se pueda impedir el acceso a este método obsoleto de
BaseVariantImpl
, cuando
variant.outputs.all
no accederá a ese método (internamente), o cuando las comprobaciones puedan 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 espere
build-tools
de
build-tools
3.3.0-alpha12
o
3.3.0-beta1
... esto ni siquiera es una
release candidate
, por lo que invertir mucho tiempo puede ser inútil, excepto usarlo para presentar otro informe de errores.
la nueva respuesta rápida El botón sigue pareciendo el más prometedor.
en la aplicación build.gradle, cambie a esta versión estable de gradle:
classpath ''com.android.tools.build:gradle:3.2.1''
Sucede después de que actualicé Android Studio a 3.3, solución temporal hasta que lo solucionaron.
edición: no es necesario degradar su estudio de Android!
esto solucionará el error: En la barra de tareas, haga clic en Herramientas-> Kotlin-> Configurar Kotlin en Proyecto
ACTUALIZACIÓN
A partir de hoy, puede usar
classpath ''io.fabric.tools:gradle:1.28.0''
para solucionar este problema.
Si comenta el complemento
io.fabric
de
io.fabric
en la aplicación, el archivo gradle funcionó temporalmente
//apply plugin: ''io.fabric''
Luego, la actualización de las dependencias de su estructura en el archivo de proyecto se resolverá de forma permanente:
classpath ''io.fabric.tools:gradle:1.27.0''
NB: esto no elimina las advertencias, pero le permite utilizar Crashlytics con AS3.3 +
EDITAR
Este problema se ha solucionado en
docs.fabric.io/android/changelog.html#march-15-2019
.
En su
build.gradle
del nivel de proyecto, agregue la siguiente línea:
classpath ''io.fabric.tools:gradle:1.28.1''
Respuesta anterior
Sucede después de que actualicé Android Studio a 3.3.0.
apply plugin: ''io.fabric''
es la causa.
He enviado 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 plugin Fabric. Consulta la última versión docs.fabric.io/android/changelog.html#fabric-gradle-plugin .
-
Bajar de categoría a Android Studio 3.2.1 .
-
Comenta fuera del plugin de
io.fabric
.
En
build.gradle
del
build.gradle
de su aplicación:
apply plugin: ''com.android.application''
// apply plugin: ''io.fabric'' <== this plugin causes the error
Sin embargo, aún puede crear y ejecutar sus proyectos a pesar de que aparezca este error. Simplemente ignóralo.