screensize - La dependencia de Android tiene una versión diferente para la compilación y el tiempo de ejecución
onconfigurationchanged (14)
Cambiar mis dependencias conflictivas de la implementación a la API hace el truco. Aquí hay un buen artículo de mindorks que explica la diferencia.
https://medium.com/mindorks/implementation-vs-api-in-gradle-3-0-494c817a6fa
Editar:
Aquí están mis resoluciones de dependencia también
subprojects {
project.configurations.all {
resolutionStrategy.eachDependency { details ->
if (details.requested.group == ''com.android.support''
&& !details.requested.name.contains(''multidex'')) {
details.useVersion "28.0.0"
}
if (details.requested.group == ''com.google.android.gms''
&& details.requested.name.contains(''play-services-base'')) {
details.useVersion "15.0.1"
}
if (details.requested.group == ''com.google.android.gms''
&& details.requested.name.contains(''play-services-tasks'')) {
details.useVersion "15.0.1"
}
}
}
}
Después de actualizar Android Studio de Canary 3 a Canary 4 , se produce el siguiente error en el momento de la compilación.
La dependencia de Android ''com.android.support:support-support-v4'' tiene una versión diferente para el classpath de compilación (25.2.0) y tiempo de ejecución (26.0.0-beta2). Debe configurar manualmente la misma versión a través de DependencyResolution.
25.1.0
una búsqueda completa en todo el proyecto y la versión
25.1.0
no se utiliza.
App-build.gradle
android {
compileSdkVersion 26
buildToolsVersion ''26.0.0''
defaultConfig {
applicationId "com.xxx.xxxx"
minSdkVersion 14
targetSdkVersion
versionCode 1
versionName "1.0"
multiDexEnabled true
}
buildTypes {
debug {
debuggable true
}
release {
debuggable false
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile(''proguard-android.txt''), ''proguard-rules.pro''
}
lintOptions {
abortOnError false
}
}}
dependencies {
implementation fileTree(dir: ''libs'', include: [''*.jar''])
testImplementation ''junit:junit:4.12''
implementation project('':core'')
implementation com.google.android.gms:play-services-gcm:9.0.0''
implementation(''com.crashlytics.sdk.android:crashlytics:2.6.5@aar'') {
transitive = true
}
implementation ''com.android.support:multidex:1.0.1''
implementation ''com.flurry.android:analytics:7.0.0''
annotationProcessor ''com.jakewharton:butterknife-compiler:8.6.0''
implementation ''com.jakewharton:butterknife:8.6.0''
implementation ''com.android.support.constraint:constraint-layout:1.0.2''
}
Library-build.gradle:
apply plugin: ''com.android.library''
android {
compileSdkVersion 26
buildToolsVersion ''26.0.0''
defaultConfig {
minSdkVersion 14
targetSdkVersion
versionCode 1
versionName "1.0"
}
}
dependencies {
implementation fileTree(dir: ''libs'', include: [''*.jar''])
implementation files(''libs/model.jar'')
testImplementation ''junit:junit:4.12''
implementation ''com.android.support:percent:26.0.0-beta2''
implementation ''com.android.support:appcompat-v7:26.0.0-beta2''
implementation ''com.android.support:support-core-utils:26.0.0-beta2''
implementation ''com.squareup.retrofit2:retrofit:2.0.2''
implementation ''com.squareup.picasso:picasso:2.4.0''
implementation ''com.squareup.retrofit2:converter-gson:2.0.2''
implementation ''com.squareup.okhttp3:logging-interceptor:3.2.0''
implementation ''uk.co.chrisjenx:calligraphy:2.2.0''
implementation ''com.google.code.gson:gson:2.2.4''
implementation ''com.android.support:design:26.0.0-beta2''
implementation ''com.github.PhilJay:MPAndroidChart:v3.0.1''
}
Nota: El proyecto se estaba construyendo bien en Canarias 3
Comento
//api ''com.google.android.gms:play-services-ads:15.0.1''
funcionó para mí después de la sincronización
Debería poder ver exactamente qué dependencia está obteniendo en la versión impar como dependencia transitiva ejecutando el comando de
gradle -q dependencies
correcto para su proyecto como se describe aquí:
https://docs.gradle.org/current/userguide/userguide_single.html#sec:listing_dependencies
Una vez que rastrea lo que lo está arrastrando, puede agregar una exclusión a esa dependencia específica en su archivo gradle con algo como:
implementation("XXXXX") {
exclude group: ''com.android.support'', module: ''support-compat''
}
Después de mucho tiempo y de obtener ayuda de un amigo que sabe mucho más que yo sobre Android: app / build.gradle
android {
compileSdkVersion 27
// org.gradle.caching = true
defaultConfig {
applicationId "com.cryptoviewer"
minSdkVersion 16
targetSdkVersion 23
versionCode 196
versionName "16.83"
// ndk {
// abiFilters "armeabi-v7a", "x86"
// }
}
y dependencias
dependencies {
implementation project('':react-native-camera'')
//...
implementation "com.android.support:appcompat-v7:26.1.0" // <= YOU CARE ABOUT THIS
implementation "com.facebook.react:react-native:+" // From node_modules
}
en build.gradle
allprojects {
//...
configurations.all {
resolutionStrategy.force "com.android.support:support-v4:26.1.0"
}
en gradle.properties
android.useDeprecatedNdk=true
android.enableAapt2=false
org.gradle.jvmargs=-Xmx4608M
Esto funcionó para mí:
Agregue la línea de seguimiento en
app/build.gradle
en la sección de dependencias:
implementation "com.android.support:appcompat-v7:27.1.0"
o
:27.1.1
en mi caso
La respuesta para mí fue también agregar esto a mi archivo
build.gradle
:
configurations.all {
resolutionStrategy.eachDependency { details ->
if (details.requested.group == ''com.android.support''
&& !details.requested.name.contains(''multidex'') ) {
details.useVersion "26.1.0"
}
}
}
En mi caso, era necesario incluir la estrategia de resolución en un bloque
configurations.all { .. }
.
app/build.gradle
el bloque
configurations.all
directamente en mi archivo
app/build.gradle
(es decir,
configurations.all
no estaba anidado en nada más)
Lo resolví actualizando mi dependencia de gradle en el archivo android / build.gradle: classpath ''com.android.tools.build:gradle:3.3.1'' (anteriormente estaba en la versión 3.2.
Lo resolví siguiendo lo que Eddi mencionó anteriormente,
resolutionStrategy.eachDependency { details ->
if (details.requested.group == ''com.android.support''
&& !details.requested.name.contains(''multidex'') ) {
details.useVersion "26.1.0"
}
}
Reemplace una versión codificada por + ejemplo:
implementation ''com.google.android.gms:play-services-base:+''
implementation ''com.google.android.gms:play-services-maps:+''
Si alguien tiene este problema de dependencia en 2019, actualice Android Studio a 3.4 o posterior
Simplemente agregue estas líneas en su archivo build.gradle
resolutionStrategy.force "com.android.support:support-media-compat:26.0.0-beta2"
resolutionStrategy.force "com.android.support:support-v4:26.0.0-beta2"
Tuve el mismo error, lo que resolvió mi problema fue. En mi biblioteca en lugar de usar compilación o implementación, uso "api". Entonces al final mis dependencias:
dependencies {
api fileTree(dir: ''libs'', include: [''*.jar''])
api files(''libs/model.jar'')
testApi ''junit:junit:4.12''
api ''com.android.support:percent:26.0.0-beta2''
api ''com.android.support:appcompat-v7:26.0.0-beta2''
api ''com.android.support:support-core-utils:26.0.0-beta2''
api ''com.squareup.retrofit2:retrofit:2.0.2''
api ''com.squareup.picasso:picasso:2.4.0''
api ''com.squareup.retrofit2:converter-gson:2.0.2''
api ''com.squareup.okhttp3:logging-interceptor:3.2.0''
api ''uk.co.chrisjenx:calligraphy:2.2.0''
api ''com.google.code.gson:gson:2.2.4''
api ''com.android.support:design:26.0.0-beta2''
api ''com.github.PhilJay:MPAndroidChart:v3.0.1''
}
Puede encontrar más información sobre "api", "implementación" en este enlace https://.com/a/44493379/3479489
Use este código en su buildscript (build.gradle root):
subprojects {
project.configurations.all {
resolutionStrategy.eachDependency { details ->
if (details.requested.group == ''com.android.support''
&& !details.requested.name.contains(''multidex'') ) {
details.useVersion "version which should be used - in your case 26.0.0-beta2"
}
}
}
}
Vea en sus proyectos de biblioteca hacer que la versión compileSdkVersion y targetSdkVersion esté al mismo nivel que su aplicación
android {
compileSdkVersion 28
defaultConfig {
consumerProguardFiles ''proguard-rules.txt''
minSdkVersion 14
targetSdkVersion 28
}
}
también hacer todas las dependencias al mismo nivel