An updated version of this plugin for the new Godot 3.2.2 Android plugin system (v1) can be found here: https://github.com/yalcin-ata/godot-android-plugin-firebase
Godot Android module for Firebase, written from scratch. This project replaces https://github.com/yalcin-ata/godot-plugin-firebase.
This works for Godot Engine's stable version 3.2 (not beta).
Follow the instructions below.
API documentation can be found here.
-
Download and start Godot 3.2. No need to build it on your own (compile, ...).
-
Install Export Templates: select menu Editor > Manage Export Templates... and download for Current Version (3.2.stable)
-
Install Android Build Template for your project: select menu Project > Install Android Build Template..., and then click Install. This will install the files in your project's directory (by adding
[PROJECT]/android/build/). -
Select menu Project > Export, and Add... Android. After setting your Unique Name, keystore stuff etc, don't forget to turn on Use Custom Build. Then click Close.
-
Run in
[PROJECT]/android/:git clone https://github.com/yalcin-ata/godot-android-module-firebase
-
From Firebase console download your project's google-services.json and copy/move it to
[PROJECT]/android/build/.Notice:
Remember to always download a new version of google-services.json whenever you make changes at the Firebase console!
-
Add following two lines at the bottom of
[PROJECT]/android/build/gradle.properties:android.useAndroidX=true android.enableJetifier=true
-
Change
minSdkfrom 18 to 21 in[PROJECT]/android/build/config.gradle:minSdk : 21
-
Change gradle version to 6.1.1 in
[PROJECT]/android/build/gradle/wrapper/gradle-wrapper.properties:distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip
-
Edit
[PROJECT]/android/godot-android-module-firebase/assets/godot-firebase-config.jsonto your needs.Notice:
IfTestAdsfor AdMob is set totrueall your Ad Unit IDs will be ignored, and the official AdMob Test IDs will be used instead.How to completely remove unneeded features is explained below.
-
Edit
[PROJECT]/android/godot-android-modules-firebase/gradle.confto match yourapplicationId:applicationId 'your.package.name'
-
In
[PROJECT]/android/godot-android-modules-firebase/AndroidManifest.confedit the following section to match your needs:<!-- AdMob --> <meta-data android:name="com.google.android.gms.ads.APPLICATION_ID" android:value="ca-app-pub-ADMOB_APP_ID"/> <!-- AdMob -->
-
In Godot select menu Project > Project Settings and go to Android: Modules to add the following line:
org/godotengine/godot/Firebase
- Alternative:
edit[PROJECT]/project.godotand add somewhere the following lines:
[android] modules="org/godotengine/godot/Firebase"
- Alternative:
Setup is done, now you can take a look at the instructions here (API).
Notice:
Never remove
implementation 'com.google.firebase:firebase-analytics:VERSION'
from gradle.conf as this is needed for Firebase.
If you want to remove some features completely (i.e. to reduce the app size, not interested in a feature, ...) follow these steps:
Let's assume you don't need Cloud Messaging:
-
in
[PROJECT]/android/godot-android-modules-firebase/gradle.confremove following lines:// Firebase Cloud Messaging implementation 'com.google.firebase:firebase-messaging:20.1.0' implementation 'androidx.work:work-runtime:2.3.1'
-
in
[PROJECT]/android/godot-android-modules-firebase/AndroidManifest.confremove following lines:<!-- Firebase Cloud Messaging --> <service android:name="org.godotengine.godot.CloudMessagingService" android:exported="false"> <intent-filter> <action android:name="com.google.firebase.MESSAGING_EVENT" /> </intent-filter> </service> <!-- Set custom default icon. This is used when no icon is set for incoming notification messages. See README(https://goo.gl/l4GJaQ) for more. --> <meta-data android:name="com.google.firebase.messaging.default_notification_icon" android:resource="@drawable/ic_stat_ic_notification" /> <!-- Set color used with incoming notification messages. This is used when no color is set for the incoming notification message. See README(https://goo.gl/6BKBk7) for more. --> <meta-data android:name="com.google.firebase.messaging.default_notification_color" android:resource="@color/colorAccent" /> <meta-data android:name="com.google.firebase.messaging.default_notification_channel_id" android:value="@string/default_notification_channel_id" /> -
in
[PROJECT]/android/godot-android-modules-firebase/src/org.godotengine.godot.Firebase.javaremove everything related to Cloud Messaging:// ===== Cloud Messaging "cloudmessaging_subscribe_to_topic", "cloudmessaging_unsubscribe_from_topic"
Notice:
Remove the last comma at the last method name in theregisterClass()method call, i.e. change-
// ===== Storage "storage_upload", "storage_download",<- this one
to -
// ===== Storage "storage_upload", "storage_download"
// ===== Cloud Messaging if (config.optBoolean("CloudMessaging", false)) { Utils.logDebug("CloudMessaging initializing"); CloudMessaging.getInstance(activity).init(firebaseApp); }
// ===== Cloud Messaging public void cloudmessaging_subscribe_to_topic(final String topicName) { activity.runOnUiThread(new Runnable() { @Override public void run() { CloudMessaging.getInstance(activity).subscribeToTopic(topicName); } }); } public void cloudmessaging_unsubscribe_from_topic(final String topicName) { activity.runOnUiThread(new Runnable() { @Override public void run() { CloudMessaging.getInstance(activity).unsubscribeFromTopic(topicName); } }); } // ===== Cloud Messaging ====================================================== -
-
in
[PROJECT]/android/godot-android-modules-firebase/src/org/godotengine/godot/remove every class with names starting with CloudMessaging.
Done!
-
Go to project's Firebase Console > Authentication > Sign-in method > Google: enable.
-
Generate SHA-1:
-
For release
-
Run in shell:
keytool -list -v -alias YOUR-ALIAS -keystore release.keystore
(type afterwards your password)
-
Copy calculated SHA-1.
-
Go to project's Firebase Console > Project Settings (click on gear wheel icon):
-
Scroll down to Your apps and click on Add fingerprint,
-
Paste the copied SHA-1 and save.
-
-
-
For debug
-
Run in shell:
keytool -list -v -alias YOUR-ALIAS -keystore debug.keystore
(type afterwards your password)
-
Copy calculated SHA-1.
-
Go to project's Firebase Console > Project Settings (click on gear wheel icon):
-
Scroll down to Your apps and click on Add fingerprint,
-
Paste the copied SHA-1 and save.
-
-
-
At project's Firebase Console > Project Settings (click on gear wheel icon):
-
Under Public settings is public-facing name, beginning with
project-...: copyproject-.... -
Edit
[PROJECT]/android/godot-android-modules-firebase/res/values/strings.xmland edit the following line:<string name="server_client_id">project-.....
-
-
-
From Firebase console download google-services.json and copy/move it to
[PROJECT]/android/build/.Again:
Remember to always download a new version of google-services.json whenever you make changes at the Firebase console!
Follow instructions at Firebase: Send a test message.
For advanced users:
Optional: Edit [PROJECT]/android/godot-android-module-firebase/res/values/strings.xml and edit following line:
<string name="default_notification_channel_id">TO BE DONE
Links: Firebase Cloud Messaging client, Firebase Cloud Messaging receive
Run in shell:
clear
(clear screen)
adb logcat -b all -c
(clear buffer cache)
adb -d logcat godot:V GoogleService:V Firebase:V StorageException:V StorageTask:V UploadTask:V FIAM.Headless:V DEBUG:V AndroidRuntime:V ValidateServiceOp:V *:S