2016-04-06 2 views
5

fand ich eine XML-Datei GoogleDependencyFlurryPlugin.xmlPlay-Dienste-Basis im Vergleich zu -Keller Abhängigkeiten (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> 

und in der Tat eine XML-Datei GoogleDependencyPlayGameServicesPlugin.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> 

Jetzt, ein Punkt die ehemalige Datei hatte NUR

play-service S-Basis> ODER < Play-Services-Keller

und das schien ein großes Problem zu verursachen. AndroidJavaException: java.lang.NoSuchMethodError: einmal auf einem Gerät ausgeführt.

Android Experten, ist es der Fall, dass, wenn Sie „Basis“ haben Sie „basement“ haben muss ... oder vielleicht umgekehrt?

In der Tat, WRT Play-Services-Spiele oder Play-Services-Plus, vielleicht eine/beide davon in irgendeiner Weise abhängen (oder widersprechen?) Basis/Keller?

+0

Wenn Sie in Ihrem App/Build-Verzeichnis in Android Studio nach der Kompilierung suchen, werden Sie feststellen, dass ' Keller "hat zusätzliche Klassen, die" Basis "nicht hat. I.e. Es hat ** zze.class **, von dem 'GooglePlayServicesUtil' abragt. –

Antwort

7

Die Bibliothek play-services-basement ist eine Abhängigkeit von play-services-base. Es wurde in Google Play Service Version 8.1.0 eingeführt, um die Größe einiger anderer Bibliotheken wie play-services-ads und play-services-analytics zu reduzieren. Wenn Sie play-services-base hinzufügen, fügen Sie automatisch auch play-services-basement hinzu, sodass es nicht notwendig ist, die explizite Abhängigkeit hinzuzufügen.

Sie können die Abhängigkeiten jeder einzelnen Bibliothek in Ihrem lokalen Google-Repository überprüfen.

zum Beispiel für die Bibliothek play-services-games die Datei pom Datei öffnen, die sich hier befindet:

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

ist der Inhalt der Datei:

<?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> 

Wie Sie play-services-games hängt von play-services-base sehen und play-services-drive

+0

Danke für diese unglaubliche Antwort! In der Tat, in Bezug auf die erste Datei, da es "play-services-base" hat, gibt es eigentlich keinen Sinn, 'play-services-basement' hinzuzufügen - habe ich dich richtig verstanden? Vielen Dank! – Fattie

+0

Ja, Sie haben recht, es macht keinen Sinn, 'play-services-basement' hinzuzufügen, wenn Sie bereits' play-services-base' hinzufügen. –

+0

hab es, ** danke **. für den anderen, da es Play-Services-Spiele verwendet, meinst du, ich muss ** play-services-base und play-services-drive einschließen? Oder habe ich dich falsch verstanden? danke ... – Fattie

Verwandte Themen