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.

  • Prueba de la unidad Android: Bundle / Parcelable
  • Prueba de unidad de base de datos SQLite de Android
  • Utilice @Ignore en AndroidTestCase
  • Problemas con la ejecución de pruebas de unidad de actividad de Android desde Eclipse
  • Ejecutar pruebas de unidad en Guardar con Android Studio
  • Cómo determinar la unidad de píxeles (px, dp, etc) de una vista en Java?
  • Cómo ejecutar todas las pruebas (unitarias e instrumentadas) con un solo clic en Android Studio
  • ¿Cómo puedo transferir un dispositivo de prueba de base de datos al dispositivo desde mi aplicación de prueba de unidad
  • ¿Cómo probar una unidad que usa HttpClient en Android usando el marco incorporado?
  • ¿Cómo puedo obtener Mockito trabajando en androidTest
  • Excepción que ejecuta pruebas de JUnit con AndroidStudio: java.lang.NoClassDefFoundError: android / os / Parcelable
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.