2016-02-02 6 views
7

In meinem Android-Projekt gibt es mehr Produkt-Varianten:Android Studio: Wie Google-Services-Modul in Produktaroma auszuschließen?

buildTypes { 
    release {} 
    debug {} 
    staging {} 
} 

productFlavors { 
    freeVersion {} 
    proVersion {} 
    partnerVersion {} 
} 

Auch ich mit Google Analytics:

apply plugin: 'com.google.gms.google-services' 

dependencies { 
    compile 'com.google.android.gms:play-services-analytics:8.4.0' 
} 

Wie in einem von ihnen Google-Dienste auszuschließen? Zum Beispiel in:

freeVersion {} 
+0

Ich habe es noch nicht getan, aber [Gradle Plugin Benutzerhandbuch] (http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Product-Flavor-Configuration) kann hilfreich für Sie sein. – iSandeep

Antwort

-2

Ich habe die Frage zunächst falsch gelesen. Um die kostenlose Version auszuschließen, verwenden Sie proVersionCompile und partnerVersionCompile mit der gewünschten Abhängigkeit, um die freeVersion auszuschließen.

dependencies { 
    proVersionCompile 'com.google.android.gms:play-services-analytics:8.4.0' 
    partnerVersionCompile 'com.google.android.gms:play-services-analytics:8.4.0' 
} 
+0

Es funktioniert nicht. Kann ich die Abhängigkeit deaktivieren, aber ich kann Gradle Plugin nicht abstellen (Plugin anwenden: 'com.google.gms.google-services'), welches jedes Mal bei der Kompilierung nach google-services.json sucht. – user3634297

+0

Dies ist ein Problem mit mehreren Varianten und google-services.json. Verwenden Sie das Plug-in com.google.gms: google-services: 2.0.0-alpha3. Dann unterstützt es Sie die Google-services.json-Datei in jedem Flavor-Verzeichnis zu platzieren. app/src/ freeVersion/google-services.json ProVersion/google-services.json partnerVersion/google-services.json – Joopkins

+0

Nein, es funktioniert nicht. Fehler: (135, 0) Plugin mit der ID 'com.google.gms: google-services: 2.0.0-alpha3' nicht gefunden. – user3634297

8

Bitte beachten Sie die Verwendung von freeCompile und zu erklären, eine Variable flavor bedingt das Plugin anwenden.

apply plugin: 'com.android.application' 

def flavor 

android { 

    .... 

    .... 

    productFlavors { 
     free { 
      applicationId "com.anandbibek.builditbigger.free" 
      flavor = "free" 
     } 
     paid { 
      applicationId "com.anandbibek.builditbigger.paid" 
      flavor = "paid" 
     } 
    } 
} 

dependencies { 

    // Added for AdMob 
    freeCompile 'com.google.firebase:firebase-ads:9.6.1' 

    compile 'com.android.support:appcompat-v7:24.2.1' 
    compile 'com.google.code.findbugs:jsr305:2.0.1' 

} 
if(flavor == "free") { 
    apply plugin: 'com.google.gms.google-services' 
} 

Stellen Sie sicher, dass Sie setzen die google-services.json Datei im Geschmack bestimmten Ordner. In meinem Fall stelle ich das nur in app/src/free. Diese Funktion ist verfügbar, wenn Sie classpath 'com.google.gms:google-services:3.0.0' in Ihrer Hauptprojekt-Datei verwenden.

+1

Das funktioniert nicht (nicht mehr?), Da der Wert immer auf den zuletzt definierten Flavour eingestellt wird :-( – Kelevandos

+0

Funktioniert immer noch für mich. Der Wert der 'flavour' Variablen wird bestimmt wann Aufgaben ausführen: Vielleicht führen Sie beide Varianten aus und greifen später auf die Variable zu? – anandbibek

+0

Ich habe versucht, es zu protokollieren und eigentlich alle 3 Geschmacksrichtungen werden nacheinander aufgerufen, und der endgültige Wert wird immer der eine Satz im letzten Modul :(Der if-Code am unteren Rand wird nur einmal aufgerufen, ändern Sie diese 3: ( – Kelevandos