5

Ich versuche derzeit die Firebase Analytics Anzug, aber ich habe ein kleines Problem konfrontiert, meine App ist sowohl auf Google Play und Amazon Store (die Google Play Services nicht unterstützt), verteilt, so dass für die Amazonas Geschmack ich Ich möchte die Abhängigkeit zu Firebase entfernen (was ich bereits weiß), aber ich muss auch das Firebase-Plugin entfernen, damit es beim Erstellen keine Ausnahme auslöst.Kann ich das Firebase-Plugin für bestimmte Geschmacksrichtungen deaktivieren?

Dies ist, was ich habe, so weit jetzt:

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' 

Aber, ich brauche nur das Plugin zu entfernen, wenn der amazon Geschmack ist.

Ist das überhaupt möglich? Oder gibt es zumindest etwas, das ich ausprobieren kann?

UPDATE:

Per Steve Anfrage, ich ging hin und versuchen, die Version mit Firebase auf meinem Amazon Kindle Tabletten und es funktioniert auch du gibt es keine Google-Dienste auf ihnen installiert Spielen.

Antwort

1

Obwohl Firebase Geräte ohne Google Play-Dienste nicht offiziell unterstützt, sollte Analytics tatsächlich auf solchen Geräten funktionieren und Sie müssen Firebase möglicherweise nicht deaktivieren (oder das Plug-in entfernen) in Ihrem Amazon-Build. Hast du es schon probiert?

+0

Ich ging weiter und versuche es trotzdem, und es versäumt, die Daten zu senden, weil es nicht die Instanz-ID generieren das, was ich benötige, ist, dass Google Play Services benötigt wird, um diese Instanz zu generieren (die alle Amazon-Geräte nicht standardmäßig installiert haben, müssen Sie sie seitenweise laden, damit sie funktioniert). –

+0

Das hat tatsächlich keinen Einfluss auf die Sammlung von Analytics. –

+0

Ok, ich werde versuchen, es heute Nacht zum Fiedler zu kopieren, nur um sicherzustellen, dass die Daten durchgehen. Vielen Dank. –

7

Laut Steves Antwort funktioniert Firebase Analytics auch ohne Google Spieldienste. Aber wir können immer noch Google Services Plugin für Aromen deaktivieren.

Versuchen Code wie folgt hinzu:

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 deaktiviere ich Google-Services für alle Aromen, die ihren Namen nicht "flavorName" nicht enthält. Sie sollten die Bedingungen so ändern, dass sie zu Ihrer Anforderung passen. Und beachten Sie, dass dies nach apply plugin: 'com.google.gms.google-services' hinzugefügt werden sollte. Ich hoffe es hilft.

+2

Dies scheint nicht die Berechtigungen zu entfernen, die von Firebase automatisch hinzugefügt wurden (INTERNET, WAKE_LOCK, C2D_MESSAGE usw.). Gibt es noch etwas, das ich der Build-Datei hinzufügen sollte? –

+0

Hi Angel, vielleicht sollten wir die Play-Services-Abhängigkeiten für diese Varianten entfernen und sicherstellen, dass in diesen Varianten nichts von den Play-Services verwendet wird. –

+0

Schließlich habe ich die hier empfohlene Methode verwendet, um die Play-Dienste zu entfernen - http://StackOverflow.com/a/39761871/908821 –

0

Es ist möglich, dass, weil einige Google-Bibliotheken Play-Dienste müssen noch in Ihrem Feuerbasis freien Geschmack enthalten sein, dass einige Feuerbasis verwandte Einträge am Ende im Finale AndroidManifest.xml verschmolzen.

Wenn Sie zusätzlich zu den Google Desktop-Aufgaben, die vom Google-Dienst-Plug-in hinzugefügt wurden (wie in der Antwort von Junyue Cao beschrieben), Firebase-bezogene Empfänger, Dienste, Anbieter, Verwendungen oder andere Tags entfernen möchten Von der endgültigen Version von AndroidManifest können Sie node markers zur Datei AndroidManifest.xml hinzufügen, die sich im Unterverzeichnis flavor, config oder build variant der App befindet.

Wenn die Knotenmarkierungen auf "remove" gesetzt sind, sind die entsprechenden Empfänger-, Dienst-, Provider-, uses-permission-Tags in der endgültigen zusammengeführten AndroidManifest.xml nicht vorhanden.

Hier ist zum Beispiel, was Sie dem AndroidManifest hinzufügen könnten.xml in einem Projekt des hypothetischen ‚nofirebase‘ Geschmacksquelle 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"/>