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
minSdk
from 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.json
to your needs.Notice:
IfTestAds
for AdMob is set totrue
all 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.conf
to match yourapplicationId
:applicationId 'your.package.name'
-
In
[PROJECT]/android/godot-android-modules-firebase/AndroidManifest.conf
edit 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.godot
and 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.conf
remove 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.conf
remove 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.java
remove 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.xml
and 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