Kan ik Firebase plugin voor specifieke smaak uitschakelen?

stemmen
5

Ik ben momenteel het uitproberen van de Firebase analytics pak, maar ik heb een klein probleem geconfronteerd, mijn app is verdeeld over beide Google Play en Amazon winkel (die geen ondersteuning biedt voor Google Play-services), dus voor de amazone smaak ik wil de afhankelijkheid verwijderen om Firebase (wat ik al weet hoe dat te doen), maar ik moet ook de Firebase plugin te verwijderen, zodat het niet een uitzondering tijdens de bouw.

Dit is wat ik heb zo ver nu:

productFlavors {
    google {
        applicationId 'google app id'
    }
    amazon {
        applicationId 'amazon app id'
    }
}

dependencies {
    googleCompile 'com.google.firebase:firebase-analytics:9.0.0'
    amazonCompile 'com.amazonaws:aws-android-sdk-mobileanalytics:2.2.12'
    amazonCompile('com.crashlytics.sdk.android:crashlytics:[email protected]') {
        transitive = true;
    }
}

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

Maar, ik moet de plugin te verwijderen alleen als de amazone smaak.

Is dit zelfs mogelijk? Of in ieder geval is er iets dichtbij dat ik kan proberen?

BIJWERKEN:

Per Steve verzoek, ik ging en probeer de versie met Firebase op mijn Amazon Kindle tabletten en het heeft zelfs gij werken is er geen Google Play-services geïnstalleerd op hen.

De vraag is gesteld op 08/06/2016 om 04:12
user
In andere talen...                            


5 antwoorden

stemmen
1

Hoewel Firebase officieel niet ondersteund apparaten zonder services van Google Play, Google Analytics moet in feite het werk op dergelijke apparaten en dus je kan niet echt nodig om Firebase uit te schakelen (of verwijder de plugin) in uw Amazon bouwen. Heb je het nog niet geprobeerd?

antwoordde op 08/06/2016 om 07:02
bron van user

stemmen
7

Per Steve's antwoord Firebase analytics werkt zelfs zonder Google Play-services. Maar we kunnen nog steeds Google-services uitschakelen plugin voor smaken.

Probeer toe te voegen code als volgt:

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

 android.applicationVariants.all { variant ->
     if (!variant.name.contains("flavorName")) {
         project.tasks.each { t ->
             if (t.name.contains("GoogleServices")) {
                 // Remove google services plugin
                 variant.getVariantData().resourceGenTask.getTaskDependencies().values.remove(t);
             }
         }
     }
 }

Hier schakel ik Google-services voor alle smaken die hun naam niet bevat "flavorName". Je moet de voorwaarden van uw behoefte te passen aan te passen. En merken dat dit na moet worden toegevoegd apply plugin: 'com.google.gms.google-services' . Hoop dat het helpt.

antwoordde op 27/09/2016 om 03:38
bron van user

stemmen
0

Het is mogelijk dat, omdat sommige Google Play-services bibliotheken nog moeten worden opgenomen in uw firebase-vrij smaak, dat sommige firebase gerelateerde inzendingen belanden in de finale samengevoegd AndroidManifest.xml.

Dus, als, naast het verwijderen van de gradle taken die werden toegevoegd door de Google-services plugin (zoals beschreven in het antwoord van Junyue Cao's), wilt u Firebase gerelateerde ontvanger, service provider te verwijderen, maakt gebruik van toestemming of andere tags uit de finale samengevoegd AndroidManifest, kunt u toevoegen knooppunt markers aan de AndroidManifest.xml gelegen in de smaak van de app, te bouwen config, of bouw variant subdirectory.

Indien het knooppunt markers zijn ingesteld op "verwijderen", dan is de bijbehorende ontvanger service provider, gebruikt permission markeringen niet aanwezig in het uiteindelijke samengevoegde AndroidManifest.xml.

Bijvoorbeeld, hier is wat je zou kunnen toevoegen aan de AndroidManifest.xml in een project hypothetische 'nofirebase' smaak bron dir (app / src / nofirebase /):

    <receiver
        android:name="com.google.firebase.iid.FirebaseInstanceIdInternalReceiver"
        tools:node="remove" />

    <receiver
        android:name="com.google.android.gms.measurement.AppMeasurementReceiver"
        tools:node="remove" />

    <receiver
        android:name="com.google.android.gms.measurement.AppMeasurementInstallReferrerReceiver"
        tools:node="remove" />

    <receiver
        android:name="com.google.firebase.iid.FirebaseInstanceIdReceiver"
        tools:node="remove" >
    </receiver>

    <service
        android:name="com.google.android.gms.measurement.AppMeasurementService"
        tools:node="remove" />

    <service
        android:name="com.google.firebase.iid.FirebaseInstanceIdService"
        tools:node="remove"/>

    <provider
        android:name="com.google.firebase.provider.FirebaseInitProvider"
        android:authorities="com.you.yourapp.firebaseinitprovider"
        tools:node="remove"/>
antwoordde op 15/06/2017 om 01:53
bron van user

stemmen
1

Ik heb eindelijk een versie om te werken met nieuwe gradle. Getest met gradle 4.6, bouwen gereedschappen 3.0.1, google-diensten plugin 3.1.1

van toepassing plugin: 'com.google.gms.google-diensten'

android.applicationVariants.all {variant ->
    if (variant.name == 'someVariantNameYouDontwantFirebase') {
        project.tasks.getByName ( 'proces' + variant.name.capitalize () + 'GoogleServices). enabled = false
    }
}
antwoordde op 15/03/2018 om 14:37
bron van user

stemmen
0

Met bovenstaande antwoorden die ik ontving een fout die taak niet bestaat (? Het is geproduceerd tijdens de bouw?). Wat werkte voor mij was om eenvoudige opdrachten vragen om zichzelf te corrigeren. In mijn geval was ik het uitschakelen van Stof op UAT bouwt.

tasks.all {

        if (it.name.contains("Uat") && (
                it.name.contains("GoogleServices") ||
                it.name.contains("fabric"))
        ){
            it.enabled = false
        }

}
antwoordde op 03/05/2018 om 14:30
bron van user

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more