Android Gradle Conflicto de dependencia con la versión interna proporcionada por Android

Posible duplicado de esta pregunta , aunque la solución no me ayudó.

Odio copiar / pegar todo el código fuente pero parece que en gradle no hay forma 🙁 ya que este es el tercer día que gradle staffing me alrededor Puse mis códigos aquí y mi disculpa por poner tanto código …

Tengo tres proyectos en mi proyecto principal. Por lo tanto mi settings.gradle se ve así:

include ':booking-sdk' include ':booking-app-lib' include ':booking-app' 

y mi build.gradle principal (en la raíz del proyecto) se parece a esto:

 buildscript { repositories { jcenter() mavenCentral() maven { url 'http://download.crashlytics.com/maven' } } dependencies { classpath 'com.android.tools.build:gradle:1.1.0' classpath 'com.crashlytics.tools.gradle:crashlytics-gradle:1.+' classpath 'com.github.jcandksolutions.gradle:android-unit-test:2.1.1' } } allprojects { repositories { jcenter() mavenCentral() maven { url 'http://download.crashlytics.com/maven' } maven { url 'https://zendesk.artifactoryonline.com/zendesk/repo' } } } ext { ANDROID_SUPPORT = 'com.android.support:support-v4:20.0.0' CRASHLYTICS = 'com.crashlytics.android:crashlytics:1.+' androidConfiguration = { compileSdkVersion 21 buildToolsVersion '21.1.2' defaultConfig { minSdkVersion 14 targetSdkVersion 21 testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } packagingOptions { exclude 'values/com_crashlytics_export_strings.xml' exclude 'META-INF/LICENSE.txt' exclude 'META-INF/NOTICE.txt' exclude 'LICENSE.txt' } lintOptions { abortOnError false absolutePaths false lintConfig file("lint.xml") } sourceSets { main { manifest.srcFile 'src/main/AndroidManifest.xml' java.srcDirs = ['src/main/java'] resources.srcDirs = ['src/main/resources'] aidl.srcDirs = ['src/main/java'] renderscript.srcDirs = ['src/main/java'] res.srcDirs = ['src/main/res'] assets.srcDirs = ['src/main/assets'] java { exclude 'com/booking_1/passenger/LibraryConfigurationConstants.java' exclude 'com/booking_2/passenger/ProductFlavorConstants.java' } } } signingConfigs { debug { storeFile file("$rootProject.projectDir/debug.keystore") storePassword "android" keyAlias "androiddebugkey" keyPassword "android" } release { storeFile file("$rootProject.projectDir/booking-androd-prod.keystore") storePassword System.getenv("PASSWORD") keyAlias System.getenv("ALIAS") keyPassword System.getenv("PASSWORD") } } } } 

Para hacer la prueba de la unidad por Robolectric y la prueba del instrumento estoy siguiendo el proyecto de Decard-Gradle que probé y trabajo con éxito.

booking-sdk es el proyecto que sostiene la lógica de negocio de la aplicación. Su estructura es así:

 -booking-sdk -/build -/src - booking_1 (flavour 1) - booking_2 (flavour 2) - main - test - build.gradle 

Tengo el mismo nombre del paquete debajo de /src/main/java y /src/test/java . Por último, build.gradle de booking-sdk ve así:

 apply plugin: 'com.android.library' android androidConfiguration android { publishNonDefault true productFlavors { booking_1 { } booking_2 { } } } dependencies { repositories { mavenCentral() } compile ANDROID_SUPPORT compile CRASHLYTICS compile 'com.google.code.gson:gson:2.3' compile 'com.squareup.retrofit:retrofit:1.7.0' compile 'com.google.android.gms:play-services:6.5.87' compile 'com.squareup.okhttp:okhttp:2.1.0' compile 'com.squareup.okhttp:okhttp-urlconnection:2.1.0' compile 'com.squareup.picasso:picasso:2.4.0' compile 'com.squareup:otto:1.3.5' compile 'org.apache.commons:commons-lang3:3.3.2' compile files('src/main/libs/GeoPIP4J.jar') // Robolectric testCompile 'junit:junit:4.12' testCompile 'org.robolectric:robolectric:2.4' testCompile 'org.hamcrest:hamcrest-core:1.1' testCompile 'org.hamcrest:hamcrest-library:1.1' testCompile 'org.hamcrest:hamcrest-integration:1.1' // TODO: requires special build of robolectric right now. working on this... androidTestCompile('org.robolectric:robolectric:2.4') { exclude module: 'classworlds' exclude module: 'commons-logging' exclude module: 'httpclient' exclude module: 'maven-artifact' exclude module: 'maven-artifact-manager' exclude module: 'maven-error-diagnostics' exclude module: 'maven-model' exclude module: 'maven-project' exclude module: 'maven-settings' exclude module: 'plexus-container-default' exclude module: 'plexus-interpolation' exclude module: 'plexus-utils' exclude module: 'wagon-file' exclude module: 'wagon-http-lightweight' exclude module: 'wagon-provider-api' } } 

Cuando ejecuto comando limpio el resultado es:

  ./gradlew :booking-sdk:clean WARNING: Dependency commons-logging:commons-logging:1.1.1 is ignored for booking_1DebugUnitTest as it may be conflicting with the internal version provided by Android. In case of problem, please repackage it with jarjar to change the class packages WARNING: Dependency org.apache.httpcomponents:httpclient:4.0.3 is ignored for booking_1DebugUnitTest as it may be conflicting with the internal version provided by Android. In case of problem, please repackage it with jarjar to change the class packages WARNING: Dependency commons-logging:commons-logging:1.1.1 is ignored for booking_1ReleaseUnitTest as it may be conflicting with the internal version provided by Android. In case of problem, please repackage it with jarjar to change the class packages WARNING: Dependency org.apache.httpcomponents:httpclient:4.0.3 is ignored for booking_1ReleaseUnitTest as it may be conflicting with the internal version provided by Android. In case of problem, please repackage it with jarjar to change the class packages WARNING: Dependency commons-logging:commons-logging:1.1.1 is ignored for booking_1DebugUnitTest as it may be conflicting with the internal version provided by Android. In case of problem, please repackage it with jarjar to change the class packages WARNING: Dependency org.apache.httpcomponents:httpclient:4.0.3 is ignored for booking_1DebugUnitTest as it may be conflicting with the internal version provided by Android. In case of problem, please repackage it with jarjar to change the class packages WARNING: Dependency commons-logging:commons-logging:1.1.1 is ignored for booking_1ReleaseUnitTest as it may be conflicting with the internal version provided by Android. In case of problem, please repackage it with jarjar to change the class packages WARNING: Dependency org.apache.httpcomponents:httpclient:4.0.3 is ignored for booking_1ReleaseUnitTest as it may be conflicting with the internal version provided by Android. In case of problem, please repackage it with jarjar to change the class packages :booking-sdk:clean BUILD SUCCESSFUL Total time: 4.83 secs 

El error ocurre cuando corro ./gradlew :passenger-sdk:check código para ver el resultado de la prueba unitaria. Me estoy poniendo por encima de las salidas primero, luego un montón de errores como este:

 ... :booking-sdk:compileBookingDebugUnitTestJava /Users/admin/Desktop/android/booking/booking-sdk/src/test/java/com/booking/passenger/db/dao/BookingDAOTest.java:3: error: package com.booking.passenger.db.providers does not exist import com.booking.passenger.db.providers.BookingContentProvider; 

Básicamente está diciendo que todas mis importaciones no existen mientras existen y no tengo ningún error en mi archivo de código y todas las importaciones reconocidas por clase.

Cualquier idea sería apreciada. Gracias.

One Solution collect form web for “Android Gradle Conflicto de dependencia con la versión interna proporcionada por Android”

Aceptar, Geadle es f * rey horrible, aunque es una herramienta poderosa.

Para su referencia si usted cae en el mismo problema esta es mi experiencia. Dado que no estoy seguro de que mis conclusiones sean absolutamente correctas, por favor, corrija si estoy equivocado.

  • Encontré que no es posible poner su carpeta de prueba bajo proyectos de biblioteca. Quería tener src/test/java para todas las bibliotecas de proyectos y ejecutar mis casos de prueba como ./gradlew :booking-sdk:test . Sin embargo, al mover este paquete a la aplicación principal (en mi caso booking-app ) y también mover archivos relacionados de build.gradle de booking-sdk a build.gradle de booking-app podría ver resultados de casos de prueba.
  • Encontré que los módulos de exclude de las dependencias no funcionan. La solución que encontré es usar la configuración.

Me gusta esto:

 configurations { all*.exclude module: 'classworlds' all*.exclude module: 'commons-logging' all*.exclude module: 'httpclient' all*.exclude module: 'maven-artifact' all*.exclude module: 'maven-artifact-manager' all*.exclude module: 'maven-error-diagnostics' all*.exclude module: 'maven-model' all*.exclude module: 'maven-project' all*.exclude module: 'maven-settings' all*.exclude module: 'plexus-container-default' all*.exclude module: 'plexus-interpolation' all*.exclude module: 'plexus-utils' all*.exclude module: 'wagon-file' all*.exclude module: 'wagon-http-lightweight' all*.exclude module: 'wagon-provider-api' } 

Espero eso ayude.

  • Cómo burlar un objeto inyectado que no se declara en el módulo?
  • Configuración de la prueba de unidad para varios módulos
  • Diálogo de prueba en ActivityUnitTestCase de Android
  • qué prueba de unidad, en aplicaciones Android
  • Utilice @Ignore en AndroidTestCase
  • ¿Cómo acceder a los recursos en Android Unittest?
  • Anotación @UiThreadTest produce "java.lang.Exception: No se pueden ejecutar métodos"
  • Cómo probar menú en Android con Robolectric
  • Los simulacros de Mockito ejecutan el código actual de Android en Lollipop o superior
  • ¿Cómo / Debo probar eventos de EventBus con Mockito?
  • No se puede resolver la actividad para: Intención
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.