studio screensize rotate how developer configchanges change android android-studio android-gradle build.gradle android-studio-3.0

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