2015-11-23 1 views
2

Nous utilisons encore le thème Holo et nous ne sommes pas encore prêts à passer au Material Design. Mais nous devons utiliser Play Services 8.3.0 plus récent (ou au moins 7.8.0), nous devons donc augmenter la version dans tous nos projets. Nous utilisons un projet de bibliothèque de base qui est lié à nos autres applications.
Le problème est que lorsque nous augmentons la version d'une partie de distribution de Services Play
Google Play Services Cast 8.3.0 modifier Holo en Material Design

com.google.android.gms:play-services-cast:8.3.0 

ensemble de l'application utilise la version plus récente de appcompat bibliothèque que nous déclarions. Sans compliquer avec une partie de la bibliothèque de service de jeu tout est encore Thème Holo et en utilisant appcompat plus ancien. Nous utilisons:

android.support.v7.app.ActionBarActivity 
com.android.support:appcompat-v7:19.0.0 
targetSdkVersion 18 
compileSdkVersion = 23 
buildToolsVersion = "23.0.0" 

Nous avons déjà essayé de réduire au-dessus des numéros de version (compileSdk, ...) sans succès. Nous avons aussi essayé d'exclure les bibliothèques de soutien de la bibliothèque coulé avec:

compile ('com.google.android.gms:play-services-cast:8.3.0'){ 
    exclude group: 'com.android.support' 
} 

mais encore une fois sans succès pour propager ce de notre projet de bibliothèque de base aux applications.

MISE À JOUR: de gradlew -q :projectName:dependencies nous sommes toujours obtenir

+--- com.google.android.gms:play-services-cast:8.3.0 
| +--- com.google.android.gms:play-services-base:8.3.0 (*) 
| \--- com.android.support:mediarouter-v7:22.2.0 
|   \--- com.android.support:appcompat-v7:22.2.0 (*) 

Pour coreReleaseCompile/coreDebugCompile (et d'autres saveurs) variantes (exclusion n'a pas d'effet). Y a-t-il quelque chose d'autre qui devrait être défini pour que le projet de bibliothèque exclue vraiment ce nouvel appcompat?

Existe-t-il un autre moyen de désactiver l'utilisation d'appcompat plus récent avec la bibliothèque de distribution?
Merci.

Répondre

0

Lorsque vous utilisez des dépendances telles que:

dependencies { 
    compile 'com.android.support:appcompat-v7:19.0.0' 
    compile ('com.google.android.gms:play-services-cast:8.3.0') 
} 

Vous pouvez exécuter ./gradlew -q dependencies (ou ./gradlew -q :projectName:dependencies) pour produire un rapport de dépendance. Dans ce cas, je reçois quelque chose comme

compile - Classpath for compiling the main sources. 
+--- com.android.support:appcompat-v7:19.0.0 -> 22.2.0 
| \--- com.android.support:support-v4:22.2.0 
|   \--- com.android.support:support-annotations:22.2.0 
\--- com.google.android.gms:play-services-cast:8.3.0 
    +--- com.google.android.gms:play-services-base:8.3.0 
    | \--- com.google.android.gms:play-services-basement:8.3.0 
    |   \--- com.android.support:support-v4:22.2.0 (*) 
    \--- com.android.support:mediarouter-v7:22.2.0 
      \--- com.android.support:appcompat-v7:22.2.0 (*) 

Comme services Google Play dépend de la version de la bibliothèque de la section 22.2.0 Support, vous voyez que la dépendance passer outre votre dépendance 19.0.0.

Remplacement mes dépendances avec:

dependencies { 
    compile 'com.android.support:appcompat-v7:19.0.0' 
    compile ('com.google.android.gms:play-services-cast:8.3.0') { 
     exclude group: 'com.android.support' 
    } 
} 

Led aux dépendances suivantes:

compile - Classpath for compiling the main sources. 
+--- com.android.support:appcompat-v7:19.0.0 
| \--- com.android.support:support-v4:19.0.0 
\--- com.google.android.gms:play-services-cast:8.3.0 
    \--- com.google.android.gms:play-services-base:8.3.0 
      \--- com.google.android.gms:play-services-basement:8.3.0 

Ce qui montre que la bibliothèque de soutien est exclue correctement. Bien sûr, cela peut certainement signifier que les services Google Play vont planter (comme il peut s'attendre à des méthodes dans la bibliothèque de support 22.2.0).

Si vous ne disposez pas d'une autre dépendance tirant sur une version plus récente de la bibliothèque de support, vous pouvez compiler avec les anciennes versions de la bibliothèque de prise en charge.

Je revérifierais vos dépendances pour m'assurer que vous êtes en train d'exclure les versions les plus récentes de la bibliothèque de support, mais que vous réalisez cette version 19.0.0 est maintenant sur 2 ans (publié en octobre 2013) et forcer spécifiquement les bibliothèques à utiliser des versions antérieures de la bibliothèque de support en excluant les dépendances est beaucoup plus susceptible de provoquer des plantages.

+0

Je suis entièrement d'accord avec vous que ce n'est pas une bonne idée d'exclure ces dépendances. Si la mise à jour vers Material Desing sera la première priorité, J'ai également mis à jour la question - l'exclusion ne fonctionne pas pour notre projet. D'autres idées pourquoi cela se passe-t-il? – Warlock