2016-02-02 2 views
7

В моем проекте Android, есть несколько разновидностей продукта:Android Studio: Как исключить модуль google-services в качестве продукта?

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

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

Кроме того, я использую Google Analytics:

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

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

Как исключить Google-услуги в одном из них? Например, в:

freeVersion {} 
+0

Я сделал это раньше, но [Руководство пользователя плагина Gradle] (http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Product-Flavor-Configuration) могут быть полезны для вас. – iSandeep

ответ

-2

Вначале я неправильно понял вопрос. Чтобы исключить бесплатную версию, вы должны использовать proVersionCompile и partnerVersionCompile с требуемой зависимостью, чтобы исключить freeVersion.

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

Не работает. Могу ли я отключить зависимость, но я не могу отключить плагин gradle (применить плагин: «com.google.gms.google-services»), который каждый раз ищет google-services.json во время компиляции. – user3634297

+0

Это проблема с несколькими вариантами и google-services.json. Используйте плагин com.google.gms: google-services: 2.0.0-alpha3. Затем он поддерживает размещение файла google-services.json в каждом каталоге аромата. приложение/SRC/ freeVersion/Google-services.json proVersion/Google-services.json partnerVersion/Google-services.json – Joopkins

+0

Нет, не работает. Ошибка: (135, 0) Плагин с id 'com.google.gms: google-services: 2.0.0-alpha3' не найден. – user3634297

8

Пожалуйста, обратите внимание на использование freeCompile и объявить переменную flavor условно применить плагин.

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' 
} 

Убедитесь, что вы положили google-services.json файл в определенной папке ароматизатора. В моем случае я положил это только в app/src/free. Это средство доступно, если вы используете classpath 'com.google.gms:google-services:3.0.0' в своем основном файле проекта.

+1

Это не работает (а не?), Так как значение всегда будет установлено на последний определенный вкус :-( – Kelevandos

+0

Все еще работает для меня. Значение переменной «flavor» определяется, когда Возможно, вы запускаете оба варианта и получаете доступ к переменной позже? – anandbibek

+0

Я пробовал записывать его, и на самом деле все три аромата вызываются один за другим, а конечное значение всегда заканчивается тем, что установлено в последнем модуле :(Если код внизу внизу только вызывается, измените эти 3: ( – Kelevandos

Смежные вопросы