java - La dependencia de Android ''com.google.android.gms: play-services-stats'' tiene una versión diferente para el classpath compile(16.0.1) y runtime(17.0.0)
react-native google-play-services (1)
Este comentario en github proporciona la respuesta a tu pregunta (y la mía):
Una dependencia (
react-native-device-info
en este caso) estaba usando la última versión de una de sus dependencias en lugar de una versión fija / fija.
Cuando
ayer
se
lanzó
una nueva versión de los servicios de Google, la compilación generó la nueva versión de
device-info
, lo que provocó el conflicto con otras dependencias que fijan correctamente la versión que necesitan.
La solución es hacer lo que se explica en la publicación vinculada en tu
android/app/build.gradle
:
implementation(project(":react-native-device-info"), {
exclude group: "com.google.android.gms"
})
implementation "com.google.android.gms:play-services-gcm:16.0.0"
y posiblemente reemplace
react-native-device-info
con cualquier otra dependencia que pueda tener el mismo problema (incluirían una línea como la
implementation "com.google.android.gms:play-services-gcm:+"
que depende de lo que sea la última versión de google gcm).
Ayer mi aplicación se estaba construyendo correctamente y hoy, sin cambiar nada, ya no puedo compilar, recibo este error:
La dependencia de Android ''com.google.android.gms: play-services-stats'' tiene> una versión diferente para compile (16.0.1) y runtime (17.0.0)> classpath. Debe configurar manualmente la misma versión a través de> DependencyResolution
Intenté omitir esto con "com.google.gms.googleservices.GoogleServicesPlugin.config.disableVersionCheck = true" y limpiar el proyecto muchas veces, pero el error sigue aquí.
Mi archivo app / build.gradle:
apply plugin: "com.android.application"
apply plugin: "com.android.application"
apply plugin: "io.fabric"
import com.android.build.OutputFile
project.ext.react = [
entryFile: "index.js"
]
apply from: "../../node_modules/react-native/react.gradle"
/**
* Set this to true to create two separate APKs instead of one:
* - An APK that only works on ARM devices
* - An APK that only works on x86 devices
* The advantage is the size of the APK is reduced by about 4MB.
* Upload all the APKs to the Play Store and people will download
* the correct one based on the CPU architecture of their device.
*/
def enableSeparateBuildPerCPUArchitecture = false
/**
* Run Proguard to shrink the Java bytecode in release builds.
*/
def enableProguardInReleaseBuilds = false
android {
compileSdkVersion rootProject.ext.compileSdkVersion
buildToolsVersion rootProject.ext.buildToolsVersion
defaultConfig {
applicationId "com.yapero"
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
multiDexEnabled true
versionCode 743
versionName "1.74"
ndk {
abiFilters "armeabi-v7a", "x86"
}
versionNameSuffix ''3''
}
splits {
abi {
reset()
enable enableSeparateBuildPerCPUArchitecture
universalApk false // If true, also generate a universal APK
include "armeabi-v7a", "x86", "arm64-v8a"
}
}
buildTypes {
release {
minifyEnabled enableProguardInReleaseBuilds
proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
}
}
packagingOptions {
exclude ''META-INF/main.kotlin_module''
exclude ''META-INF/-no-jdk.kotlin_module''
}
dexOptions {
javaMaxHeapSize "4g"
}
// applicationVariants are e.g. debug, release
applicationVariants.all { variant ->
variant.outputs.each { output ->
// For each separate APK per architecture, set a unique version code as described here:
// http://tools.android.com/tech-docs/new-build-system/user-guide/apk-splits
def versionCodes = ["armeabi-v7a":1, "x86":2, "arm64-v8a": 3]
def abi = output.getFilter(OutputFile.ABI)
if (abi != null) { // null for the universal-debug, universal-release variants
output.versionCodeOverride =
versionCodes.get(abi) * 1048576 + defaultConfig.versionCode
}
}
}
}
dependencies {
implementation project('':@segment_analytics-react-native'')
implementation project('':react-native-webview'')
implementation project('':react-native-version-check'')
implementation project('':react-native-firebase'')
implementation(project('':react-native-firebase'')) {
transitive = false
}
implementation(''com.crashlytics.sdk.android:crashlytics:2.9.5@aar'') {transitive = true}
//implementation project('':react-native-version-check'')
implementation project('':react-native-maps'')
implementation project('':react-native-intercom'')
implementation ''io.intercom.android:intercom-sdk-base:5.+''
implementation ''io.intercom.android:intercom-sdk-fcm:5.+''
implementation project('':react-native-fbsdk'')
implementation project('':react-native-device-info'')
implementation project('':react-native-appsflyer'')
implementation project('':react-native-text-input-reset'')
implementation project('':react-native-linear-gradient'')
implementation project('':react-native-fast-image'')
implementation fileTree(dir: "libs", include: ["*.jar"])
implementation "com.android.support:appcompat-v7:${rootProject.ext.supportLibVersion}"
implementation "com.facebook.react:react-native:+" // From node_modules
implementation "com.google.android.gms:play-services-base:16.1.0"
implementation "com.google.firebase:firebase-core:16.0.8"
implementation "com.google.firebase:firebase-auth:16.2.1"
implementation "com.google.firebase:firebase-firestore:17.1.5"
implementation "com.google.firebase:firebase-messaging:17.5.0"
implementation ''me.leolin:ShortcutBadger:1.1.21@aar''
implementation ''com.android.support:multidex:1.0.0''
}
// Run this once to be able to run the application with BUCK
// puts all compile dependencies into folder libs for BUCK to use
task copyDownloadableDepsToLibs(type: Copy) {
from configurations.compile
into ''libs''
}
apply plugin: ''com.google.gms.google-services''
Mi build.gradle:
buildscript {
ext {
buildToolsVersion = "28.0.2"
minSdkVersion = 16
compileSdkVersion = 28
targetSdkVersion = 27
supportLibVersion = "28.0.0"
}
repositories {
google()
jcenter()
maven {
url ''https://maven.fabric.io/public''
}
}
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.25.4''
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
mavenLocal()
google()
jcenter()
maven {
// All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
url "$rootDir/../node_modules/react-native/android"
}
}
}
task wrapper(type: Wrapper) {
gradleVersion = ''4.7''
distributionUrl = distributionUrl.replace("bin", "all")
}
¿Alguien sabe cómo corregir u omitir esta versión? Pregúntame si necesitas más información.