2016-04-06 22 views
5

ho trovato un file XML GoogleDependencyFlurryPlugin.xmlplay-servizi-base contro le dipendenze -basement (AAR) in Android

<dependencies> 
<dependency><groupId>com.google.android.gms</groupId><artifactId>play-services-base</artifactId><version>8.4+</version></dependency> 
<dependency><groupId>com.google.android.gms</groupId><artifactId>play-services-basement</artifactId><version>8.4+</version></dependency> 
</dependencies> 

e in effetti un GoogleDependencyPlayGameServicesPlugin.xml file xml

<dependencies> 
<dependency><groupId>com.google.android.gms</groupId><artifactId>play-services-games</artifactId><version>8.4+</version></dependency> 
<dependency><groupId>com.google.android.gms</groupId><artifactId>play-services-plus</artifactId><version>8.4+</version></dependency> 
</dependencies> 

Ora, a un punto il file precedente aveva SOLO

play-service s-base> OR < play-services-seminterrato

e che sembrava causare un enorme problema. AndroidJavaException: java.lang.NoSuchMethodError: una volta eseguito su un dispositivo.

esperti Android, è il caso che se si dispone di "base" è necessario disporre "cantina" ... o forse viceversa?

In effetti, giochi di giochi di ruolo WRT o servizi di gioco-plus, forse uno/entrambi di questi dipendono in qualche modo (o contraddire?) Base/seminterrato?

+0

Se si guarda nella cartella app/build in Android Studio dopo la compilazione, si noterà che ' seminterrato' ha classi aggiuntive che 'base' non ha. Cioè ha ** zze.class **, da cui "GooglePlayServicesUtil" si estende. –

risposta

7

La libreria play-services-basement è una dipendenza di play-services-base. È stato introdotto nella versione 8.1.0 di Google Play Service per ridurre le dimensioni di alcune altre librerie come play-services-ads e play-services-analytics.

Quando aggiungi play-services-base aggiungi automaticamente play-services-basement quindi non è necessario aggiungere la dipendenza esplicita.

È possibile controllare le dipendenze di ogni singola libreria nel proprio repository Google locale.

Ad esempio per la libreria play-services-games aprire il file pom che si trova qui:

extras/google/m2repository/com/google/android/gms/play-services-games/8.4.0/play-services-games-8.4.0.pom 

questo è il contenuto del file:

<?xml version="1.0" encoding="UTF-8"?> 
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.google.android.gms</groupId> 
    <artifactId>play-services-games</artifactId> 
    <version>8.4.0</version> 
    <packaging>aar</packaging> 
    <dependencies> 
    <dependency> 
     <groupId>com.google.android.gms</groupId> 
     <artifactId>play-services-base</artifactId> 
     <version>8.4.0</version> 
     <scope>compile</scope> 
     <type>aar</type> 
    </dependency> 
    <dependency> 
     <groupId>com.google.android.gms</groupId> 
     <artifactId>play-services-drive</artifactId> 
     <version>8.4.0</version> 
     <scope>compile</scope> 
     <type>aar</type> 
    </dependency> 
    </dependencies> 
</project> 

Come si può vedere play-services-games dipende play-services-base e play-services-drive

+0

Grazie per questa incredibile risposta! Quindi, per quanto riguarda il primo file dal momento che ha "play-services-base", in realtà non ha senso aggiungere "play-services-basement" - ho capito bene? Grazie! – Fattie

+0

Sì, hai ragione, non ha senso aggiungere "play-services-basement" se aggiungi già "play-services-base". –

+0

capito, ** grazie **. per l'altro, dal momento che utilizza giochi-servizi-giochi, intendi che io ** devo ** includere i servizi di gioco-base e il gioco-servizi-guida? O ti ho frainteso? grazie ... – Fattie