docs - Firebase Admin SDK für Android, Methoden nicht gefunden




import firebase sdk (2)

Ich erstelle eine Android-App, die von einer Firebase-App unterstützt wird, und möchte ein Administratorkonto erstellen, mit dem andere Benutzerkonten bearbeitet oder gelöscht werden können. Wenn ich das richtig verstehe, sollte mir das Firebase Admin SDK dies erlauben. Also habe ich die Anweisungen here befolgt.

So richten Sie das Admin-SDK in meiner App ein Ich habe folgendes zu build.app hinzugefügt:

compile 'com.google.firebase:firebase-admin:4.1.1'

Und in meiner Anwendungsklasse habe ich Folgendes hinzugefügt:

FileInputStream serviceAccount = null;
try {
    serviceAccount = new FileInputStream("app/<MY-DATABASE>.json");
} catch (FileNotFoundException e) {
    e.printStackTrace();
}

if (serviceAccount != null) {
    FirebaseOptions options = new FirebaseOptions.Builder()
            .setCredential(FirebaseCredentials.fromCertificate(serviceAccount))
            .setDatabaseUrl("https://<MY-APP>.firebaseio.com/")
            .build();

    FirebaseApp.initializeApp(options);
}

Es sagt mir jedoch, dass:

  • Es gibt keine Methode namens setCredential () in FirebaseOptions.Builder und
  • FirebaseApp.initializeApp () verwendet ein Context-Objekt, nicht FirebaseOptions.

Laut Dokumentation ist FirebaseOptions.Builder.setCredential() eine neue Methode, die das veraltete FirebaseOptions.Builder.setServiceAccount() . Aber setServiceAccount() existiert auch nicht.

Was ist denn hier los?


Jetzt wird die FirebaseOptions-Klasse aus anderen Abhängigkeiten übernommen. Sie können möglicherweise Firebase-Komponenten aus anderen Abhängigkeiten entfernen (siehe unten), indem Sie das Exclude-Tag verwenden.

compile 'com.google.firebase:firebase-admin:5.8.0' 

compile ('com.google.firebase:firebase-messaging:9.6.1'){
    exclude module: 'firebase-common'
}
compile ('com.google.firebase:firebase-auth:9.6.1'){
    exclude module: 'firebase-common'
}
compile ('com.google.firebase:firebase-database:9.6.1'){
    exclude module: 'firebase-common'
}
compile ('com.firebase:firebase-client-android:2.5.0'){
    exclude module: 'firebase-common'
}

Sie können das Firebase Admin SDK nicht in einer Android-App zusammen mit den Firebase Android-Client-Bibliotheken verwenden. Die SDKs stellen Klassen mit genau demselben Paket und Klassennamen zur Verfügung, sodass sie möglicherweise nicht gleichzeitig verwendet werden können (wie würde der Compiler wissen, welche in Ihre App integriert werden soll?).

Schauen Sie sich beispielsweise das Javadoc für FirebaseOptions Builder in der Android-Clientbibliothek an:

com.google.firebase.FirebaseOptions.Builder

Schauen Sie sich jetzt dieselbe Klasse aus dem Java Admin SDK an (beachten Sie, dass die URL unterschiedlich ist):

com.google.firebase.FirebaseOptions.Builder

Sie können selbst erkennen, dass es sich um verschiedene Dinge handelt, auch wenn sie denselben Namen haben. Ihr Compiler betrachtet daher die Android SDK-Definition und nicht die Admin SDK-Definition.

Wie Frank sagte, möchten Sie die Admin-Bibliothek wahrscheinlich nicht in Ihrer Android-App verwenden. Wenn Sie das Admin-SDK verwenden möchten, verwenden Sie es von einem Server, den Sie steuern, und lassen Sie Ihre Android-App bei Bedarf damit kommunizieren.





firebase-admin