FirebaseKit is UE4/UE5 plugin that lets you use Firebase functionalities in your games easily!
Be aware of the issues your players face.
Automatically gather crash reports to track and resolve errors, improve the quality of your product.

To automatically upload DSYM you need to make a slighty changes in YourGameName.Target.cs file:
Add this one line (preferrably at the end of method) in your YourGameNameTarget constructor.
AddFirebaseKitIOSSymbolsUploadScript(Target);
Insert code snippet located in /FirebaseKit/Docs/ below YourGameNameTarget constructor.
using UnrealBuildTool;
using System.Collections.Generic;
public class YourGameNameTarget : TargetRules
{
public YourGameNameTarget(TargetInfo Target) : base(Target)
{
Type = TargetType.Game;
DefaultBuildSettings = BuildSettingsVersion.V2;
ExtraModuleNames.AddRange( new string[] { "YourGameName" } );
// New FirebaseKit code line below:
AddFirebaseKitIOSSymbolsUploadScript(Target);
}
INSERT THE FIREBASEKIT SNIPPET HERE
}



As UE.25 changed android linker to ldd instead of ld and it causes Firebase Crashlytics to lose NDK stack traces which is mentioned in official Firebase docs as known issue.
We have two ways to fix it:
(recommended) Change linker back to ld by enabling ProjectSettings->Android->AdvancedBuild->Force linking to use ld instead of lld

In this method you don’t have to change anything in Engine.
(alternative) Add linker flag in AndroidToolchain.cs
-Wl,--no-rosegment
In order to properly check the integration, you should check the plugin by simulating the target conditions through manual crash calling during game activity.
For this purpose, you can use a ForceCrash method specially prepared for it. In all conditions and types of build it will cause the application crash.
Use FirebaseKit Crashlytics Force Crash blueprint node in place of your choice (it is static blueprint library function, you can use it almost everywhere).

Add FirebaseKit module to your PublicDependencyModuleNames in YourGame.Build.cs :
PublicDependencyModuleNames.Add("FirebaseKit");
Include header in .cpp/.h file:
#include "FirebaseKit.h"
Trigger ForceCrash function:
if(UFirebaseKit* FirebaseKitPtr = UFirebaseKit::GetFirebaseKit())
{
FFirebaseKitCrashlyticsPtr Crashlytics = FirebaseKitPtr->GetCrashlytics();
if(Crashlytics.IsValid())
{
Crashlytics->ForceCrash();
}
}
When crash takes place please restart the application to allow Firebase systems to submit crash report into the cloud.
After few minutes you should see call stack in Firebase dashboard.
Sample crash call stack view in Firebase Console:

You can add custom logs, userID or custom key-value pairs to be sent along with the crashlog to help investigate the problem.
For example, you can send information about what level was played, what character was used, what menu was displayed.
if(UFirebaseKit* FirebaseKitPtr = UFirebaseKit::GetFirebaseKit())
{
FFirebaseKitCrashlyticsPtr Crashlytics = FirebaseKitPtr->GetCrashlytics();
if(Crashlytics.IsValid())
{
Crashlytics->Log("Additional log with some info");
Crashlytics->SetUserID("PayingUser_34426");
Crashlytics->SetCustomKey("test_string",FString("Some String"));
Crashlytics->SetCustomKey("test_chars","Some Characters");
Crashlytics->SetCustomKey("test_bool", true);
Crashlytics->SetCustomKey("test_int", 12345);
Crashlytics->SetCustomKey("test_int64", (int64)123456789123456);
Crashlytics->SetCustomKey("test_float",3.14f);
Crashlytics->SetCustomKey("test_double",(double)30003434.0234);
Crashlytics->Log("Some other log");
Crashlytics->Log("And another one!");
}
}
Or via Blueprints:

If you keep them updated, you will have a lot more data than the crashlog itself when the crash occurs!
For your convenience the casting to FString is done on the plugin side (for the most common simple variable types).


CustomKey names can be any name you like (names from sample are not required).
Plugin upgrades android “support libraries” to “AndroidX” and upgrades versions of google libraries.
Plugin also upgrades gradle version.
This may cause conflicts with other plugins.
If you need plugin for different engine version please contact us before purchase.
We cannot add official support for older versions (Marketplace rules limits us to last three versions since initial submission), but we had 4.22 and 4.23 projects tested and ready to submit.
If you would like to use them or need something different - please contact us. ( plugins@manufractal.com )
If you encounter any issues with our plugin, please send us an email at: supportplugins@manufractal.com
We will try to help you out!
Send us an email at discordplugins@manufractal.com with InvoiceID (to confirm the purchase) and discord username (e.g. “YourNickname#7318”) then you will receive an invitation to private Discord support server.
You will also receive notification of updates and new features.
Standard UE Marketplace license
Please read official docs:
MARKETPLACE DISTRIBUTION AGREEMENT
MARKETPLACE FREQUENTLY ASKED QUESTIONS (FAQ)
MARKETPLACE KNOWLEDGE BASE
Used thirdparty:
FirebaseSDK Android License - Apache 2.0
FirebaseSDK iOS License - Apache 2.0
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.