Skip to content

Instantly share code, notes, and snippets.

@bfg
Last active February 10, 2026 01:31
Show Gist options
  • Select an option

  • Save bfg/23e61faff1580acb43360640fd29b273 to your computer and use it in GitHub Desktop.

Select an option

Save bfg/23e61faff1580acb43360640fd29b273 to your computer and use it in GitHub Desktop.
Firebase Java Admin SDK graalvm minimal configuration

How to make firebase-admin to work with GraalVM native-image?

You need to add the following to your project:

  • src/main/resources/META-INF/native-image/firebase-admin/firebase-admin/resource-config.json (required by most SDK clients)
{
  "resources" : {
    "includes" : [
      {
        "pattern" : "admin_sdk.properties"
      }
    ]
  }
}
  • src/main/resources/META-INF/native-image/firebase-admin/firebase-admin/reflect-config.json (contains minimal example to make FCM push message sending work, add classes you need in your project)
[
    {
        "name": "com.google.firebase.messaging.AndroidConfig",
        "allDeclaredConstructors": true,
        "allPublicConstructors": true,
        "allPublicMethods": true,
        "allDeclaredFields": true,
        "allPublicFields": true
    },
    {
        "name": "com.google.firebase.messaging.AndroidFcmOptions",
        "allDeclaredConstructors": true,
        "allPublicConstructors": true,
        "allPublicMethods": true,
        "allDeclaredFields": true,
        "allPublicFields": true
    },
    {
        "name": "com.google.firebase.messaging.AndroidNotification",
        "allDeclaredConstructors": true,
        "allPublicConstructors": true,
        "allPublicMethods": true,
        "allDeclaredFields": true,
        "allPublicFields": true
    },
    {
        "name": "com.google.firebase.messaging.ApnsConfig",
        "allDeclaredConstructors": true,
        "allPublicConstructors": true,
        "allPublicMethods": true,
        "allDeclaredFields": true,
        "allPublicFields": true
    },
    {
        "name": "com.google.firebase.messaging.ApnsFcmOptions",
        "allDeclaredConstructors": true,
        "allPublicConstructors": true,
        "allPublicMethods": true,
        "allDeclaredFields": true,
        "allPublicFields": true
    },
    {
        "name": "com.google.firebase.messaging.FcmOptions",
        "allDeclaredConstructors": true,
        "allPublicConstructors": true,
        "allPublicMethods": true,
        "allDeclaredFields": true,
        "allPublicFields": true
    },
    {
        "name": "com.google.firebase.messaging.Message",
        "allDeclaredConstructors": true,
        "allPublicConstructors": true,
        "allPublicMethods": true,
        "allDeclaredFields": true,
        "allPublicFields": true
    },
    {
        "name": "com.google.firebase.messaging.Notification",
        "allDeclaredConstructors": true,
        "allPublicConstructors": true,
        "allPublicMethods": true,
        "allDeclaredFields": true,
        "allPublicFields": true
    },
    {
        "name": "com.google.firebase.messaging.WebpushConfig",
        "allDeclaredConstructors": true,
        "allPublicConstructors": true,
        "allPublicMethods": true,
        "allDeclaredFields": true,
        "allPublicFields": true
    },
    {
        "name": "com.google.firebase.messaging.WebpushFcmOptions",
        "allDeclaredConstructors": true,
        "allPublicConstructors": true,
        "allPublicMethods": true,
        "allDeclaredFields": true,
        "allPublicFields": true
    },
    {
        "name": "com.google.firebase.messaging.internal.MessagingServiceResponse",
        "allDeclaredConstructors": true,
        "allPublicConstructors": true,
        "allPublicMethods": true,
        "allDeclaredFields": true,
        "allPublicFields": true
    }
]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment